2017-02-24 24 views
1

我是MongoDb的新手,有很多關於在2.x版本中更新集合的例子,但我找不到關於3.x版本的任何源代碼。如何在Java中更新MongoDb數據庫?

Java代碼:

MongoClient mongoClient = new MongoClient("localhost",27017); 
    MongoDatabase database = mongoClient.getDatabase("dbTest"); 
    MongoCollection<Document> collection = database.getCollection("colTest"); 
    Document updateQuery = new Document(); 
    updateQuery.append("$set", 
    new Document().append("_id", "test")); 
    Document searchQuery = new Document(); 
    searchQuery.append("likes", "125"); 
    collection.updateMulti(searchQuery, updateQuery); //.updateMulti gives an error. 

沒有任何updateMulti在3.X我怎麼能檢查數據庫的ID和更改數據更呢?

實施例的MongoDB:

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

預期輸出:

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

回答

1

MongoDB的-Java驅動程序:

使用updateOne方法 要基於所述過濾器上的收集內更新單個文檔,

  collection.updateOne(searchQuery, updateQuery); 

使用updateMany方法, 更新基於過濾器的集合中的多個文檔,

  collection.updateMany(searchQuery, updateQuery); 

實施例,

 MongoClient client = new MongoClient("localhost",27017); 
     MongoDatabase db = client.getDatabase("TestDB"); 
     MongoCollection<Document> collection = db.getCollection("test"); 
     Document query = new Document(); 
     query.append("_id","test"); 
     Document setData = new Document(); 
     setData.append("status", 1).append("instagram.likes", 125); 
     Document update = new Document(); 
     update.append("$set", setData); 
     //To update single Document 
     collection.updateOne(query, update);