【问题标题】:Mongoose update multiple documentsMongoose 更新多个文档
【发布时间】: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(){..});

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

【问题讨论】:

  • 那么还有其他方法吗?

标签: javascript node.js mongodb mongoose insert-update


【解决方案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}
  • 使用 $ 或其中一个对象匹配文档并更新任一文档,我想更新两个文档??
猜你喜欢
  • 2020-04-20
  • 1970-01-01
  • 2018-01-13
  • 2016-02-25
  • 2021-02-21
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多