Mongoose 更新多个文档

Posted

技术标签:

【中文标题】Mongoose 更新多个文档【英文标题】:Mongoose update multiple documents 【发布时间】:2015-02-19 08:06:19 【问题描述】:

实际上我正在使用 mongoDB,并且我能够使用单个 ObjectID 更新文档,所以现在我想对具有不同 ObjectID 的多个文档执行更新,我做了相当多的搜索,才知道 multi:true 将有助于更新多个文档。 假设我有

var uid = 'Userid': ObjectId(..);
var id = 'Newid': Object(..);

现在我想对这两个具有 不同 ObjectId'separatley不同文档 执行更新,到目前为止,我尝试了这个考虑Schema 中的 "xyz""abc" 数组仅用于演示

var update_uid = $push:'xyz': some_id;
var update_id = $push:'abc': some_other_id;

Test.update(uid,id,update_uid,update_id,multi:true,function()..);

我知道这是错误的,我提到它是为了以防万一,任何帮助和建议将不胜感激

【问题讨论】:

那么还有其他方法吗? 【参考方案1】:

如果您有多个要匹配的 id,您可以使用关键字$in 检查数组中是否有任何匹配项。现在您还有多个要检查的属性,您可以使用 $or 关键字,如果数组中的任何一个对象与数据库中的文档匹配,它将找到匹配项。

var userIds = ['Userid':ObjectId(..), 'Userid':ObjectId(..)];
var newIds = ['Newid': Object(..), 'Newid': Object(..)];

var query = 
  $or: [$in: userIds, $in: newIds]

【讨论】:

但是 Model.update 函数只能找到一个文档并更新它,我想让猫鼬找到多个文档,例如--Model.update(userIds,newIds,update,function.);- - 并同时分别更新 userIds 和 newIds 中的文档。这可能吗? 是的,这只是查找它们的查询。您必须添加定义应更新内容的查询对象,然后,正如您在问题中提到的,您必须添加 multi:true 使用 $ 或其中一个对象匹配文档并更新任一文档,我想更新两个文档??

以上是关于Mongoose 更新多个文档的主要内容,如果未能解决你的问题,请参考以下文章

通过在 body、mongoose/mongodb 中提供文档来更新多个文档

Mongoose:findOneAndUpdate 不返回更新的文档

Mongoose:findOneAndUpdate 不返回更新的文档

Mongoose:findOneAndUpdate 不返回更新的文档

Mongoose 更新结果确切地显示了哪些字段被修改

如何在 Mongoose 中更新/插入文档?