MongoDB基于ObjectID更新多个文档(_id)

时间:2013-06-25 22:28:48

标签: java mongodb

我正在使用MongoDB的Java驱动程序。我有一个集合中的文档ID列表。我想更新每个文档中的单个字段,其中“_id”等于我的列表中的一个文档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更新文档,将其“field”属性设置为59.

我能以正确的方式解决这个问题吗?

1 个答案:

答案 0 :(得分: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运算符。