0

我将 Java 驱动程序与 MongoDB 一起使用。我有一个集合中的文档 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 更新文档,将它们的“字段”属性设置为 59。

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

4

1 回答 1

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运算符。

于 2013-06-25T22:58:26.700 回答