当前位置: 首页 > 知识库问答 >
问题:

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

尉迟韬
2023-03-14

我在MongoDB中使用Java驱动程序。我有一个集合中的文档id列表。我想在每个文档中更新一个字段,该文档的“\u 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)));

我的目的是用\u id=123、\u id=456和\u id=789更新文档,将其“field”属性设置为59。

我这样做对吗?

共有1个答案

齐文栋
2023-03-14

我认为你需要做一些改变:

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

 类似资料:
  • 给定对象数组: 如何构造查询,以便在DB中更新每个文档的名称字段,其中文档的id等于数组对象中的\u id? 这必须在单个查询中完成。查询必须使用mongoDB节点驱动程序语法。 例如:

  • 我想在这里完成的事情很简单。我正在尝试更新MongoDB集合中的单个文档。当我使用任何字段(如“name”)查找文档时,更新查询成功。以下是查询: 如果我试图用ObjectId查找文档,它永远不会工作,因为它与任何文档都不匹配。 是否有可能使此查询与对象ID一起工作? 我同意我的问题有点类似于如何使用Java mongodb驱动程序中的“_id”字段查询文档?但是,我在尝试更新文档时没有收到任何错

  • 主要内容:update() 方法,save() 方法在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(     <query>,     <update>,

  • 本文向大家介绍MongoDB中一次查询更新多个文档,包括了MongoDB中一次查询更新多个文档的使用技巧和注意事项,需要的朋友参考一下 要通过单个查询更新许多文档,请在MongoDB中使用 bulkWrite()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是使用MongoDB中的一个查询来更新许多文档的查询- 在find()方法的帮助

  • 在我的用例中,我希望使用spring-data-mongo一次更新多个文档,即与查询匹配的文档。 这是我一直在尝试的, MongoDB-3.6 spring-data-mongoDB-1.5.5.release

  • 我想使用mongoose从多个文档更新多个子文档。 我目前的代码是: 模式的一部分是: 但是这段代码只更新id arr中的最后一个元素。