2017-02-21 9 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

 Смежные вопросы

  • Нет связанных вопросов^_^