【问题标题】:MongoDB Update Multiple Documents based on ObjectID (_id)MongoDB 根据 ObjectID (_id) 更新多个文档
【发布时间】:2013-06-22 22:01:37
【问题描述】:

我在 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 的文档,将它们的“字段”属性设置为 59。

我这样做对吗?

【问题讨论】:

    标签: java mongodb


    【解决方案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 运算符。

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多