2017-02-21 2 views
0

Ich weiß, wie wir Daten in die Sammlungen einfügen, aber wie fügen wir sie in Subdatas wie im Beispiel unten hinzu?Wie füge ich Daten in Subdatas in MongoDb ein?

Jar Files:

BSON-3.4.2.jar,
mongodb-Treiber-3.4.2.jar,
mongodb-Treiber-Asynchron-3.4.2.jar,
mongodb -Treiber-Core-3.4.2.jar

Java-Dateien:

 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 
} 

Antwort

1

Aktualisieren Sie Ihren Code unten. Fügen Sie weitere Unterdatenfelder nach Bedarf hinzu.

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")); 

Versuchen Sie es mit neueren API-Klassen. BasicDBObject, DBCollection & DB sind alte 2.x-Klassen.

So etwas wie.

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

Da Sie Java verwenden, werfen Sie einen Blick auf jongo und die "Punktnotation":

In Ihrem Fall könnten Sie so etwas tun:

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

Gibt es einen Weg ohne Jongo zu verwenden? –

+0

Auch Punktnotation, ohne jongo: [folge dieser Antwort] (http://stackoverflow.com/a/33864465/1535071) – imTachu

Verwandte Themen