2017-02-21 68 views
0

我知道如何將數據放入集合中,但我們如何將它們添加到子數據中,如下面的示例中所示?如何將數據插入到MongoDb中的子數據?

JAR文件:

BSON-3.4.2.jar,
MongoDB的驅動-3.4.2.jar,
MongoDB的驅動器 - 異步-3.4.2.jar,
的MongoDB -driver核-3.4.2.jar

Java文件:

 MongoClient mongoClient = new MongoClient("localhost" , 27017); 
    DB db = mongoClient.getDB("test"); 
    System.out.println("Connect to database successfully"); 

    boolean auth = db.authenticate(myUserName, myPassword); 
    System.out.println("Authentication: "+auth);   
    DBCollection coll = db.getCollection("mycol"); 
    System.out.println("Collection mycol selected successfully"); 

    BasicDBObject doc = new BasicDBObject("title", "MongoDB"). 
     append("description", "database"). 
     append("likes", 100). 
     append("url", "http://www.instagram.com/"). 
     append("by", "users"); 

    coll.insert(doc); 

的MongoDB:

{ 
    "_id" : "test", 
    "status" : 2, 
    "time" : null, 
    "instagram" :{ 
     "description" : "database", 
     "likes" : 100, 
     "url" : "http://www.instagram.com/", 
     "by", "users" 
    }, 
    "batchid" : 15000234 
} 

回答

1

將您的代碼更新到下面。根據需要添加其餘的子數據字段。

BasicDBObject doc = new BasicDBObject("title", "MongoDB"). 
      append("description", "database"). 
      append("likes", 100). 
      append("url", "http://www.instagram.com/"). 
      append("by", "users"). 
      append("instagram", new BasicDBObject("description","database").append("likes", "likes")); 

嘗試使用更新的api類。 BasicDBObject,DBCollection & DB是舊的2.x類。

有點像。

MongoClient mongoClient = new MongoClient("localhost" , 27017); 
MongoDatabase db = mongoClient.getDatabase("test"); 
System.out.println("Connect to database successfully"); 

boolean auth = db.authenticate(myUserName, myPassword); 
System.out.println("Authentication: "+auth); 
MongoCollection<Document> coll = database.getCollection("mycol"); 
System.out.println("Collection mycol selected successfully"); 

Document doc = new Document("title", "MongoDB"). 
      append("description", "database"). 
      append("likes", 100). 
      append("url", "http://www.instagram.com/"). 
      append("by", "users"). 
      append("instagram", new Document("description","database").append("likes", "likes")); 


coll.insertOne(doc); 
1

由於您使用的是Java,看看jongo和 「點號」:

在你的情況,你可以做這樣的事情:

collection.update("{ _id: 'test'}").with("{$set: {"instagram.likes": 2}}) 
+0

有沒有辦法不使用jongo? –

+0

也是點符號,沒有jongo:[按照這個答案](http://stackoverflow.com/a/33864465/1535071) – imTachu

相關問題