2013-06-25 46 views
0

我在MongoDB中使用Java驅動程序。我在一個集合中有一個文檔ID列表。我想更新每個文檔中具有與我的列表中的文檔ID相同的「_id」的單個字段。在下面的例子中,我想是這樣的:MongoDB更新基於ObjectID的多個文檔(_id)

List<ObjectID> list = new ArrayList<ObjectID>(); 
list.append(new ObjectId("123")); 
list.append(new ObjectId("456")); 
list.append(new ObjectId("789")); 

column.updateMulti(new BasicDBObject("_id", list),new BasicDBObject("$set",new BasicDBObject("field",59))); 

我的意圖是要更新與_id = 123,_id = 456的文件和_id = 789,他們的「場」屬性設置爲59

我正在以正確的方式去做這件事嗎?

回答

1

我相信你需要做一些修改:

BasicDBList list = new BasicDBList(); 
list.add(new ObjectId("123")); 
// Add the rest... 

DBObject inStatement = new BasicDBObject("$in", list); 
column.updateMulti(new BasicDBObject("_id", inStatement), new BasicDBObject("$set", new BasicDBObject("field", 59)); 

否則,您目前的查詢,你正在做的_id財產免受_ids列表的相等比較 - 沒有實際使用$in運營商。

+0

是的,解決了它!謝謝!!! – ossys