如何将数据插入MongoDb中的子数据?

时间:2017-02-21 08:19:05

标签: java mongodb

我知道我们如何将数据放入集合中,但我们如何将它们添加到子集中,如下例所示?

Jar文件:

  

BSON-3.4.2.jar,
  MongoDB的驱动-3.4.2.jar,
  MongoDB的驱动器 - 异步-3.4.2.jar,
  mongodb的驱动器芯-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
}

2 个答案:

答案 0 :(得分:1)

由于您使用的是Java,请查看jongo和"点符号":

在你的情况下,你可以这样做:

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

答案 1 :(得分: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类。 BasicDBObjectDBCollection& 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);