【问题标题】:Mongoose find many and update all猫鼬找到很多并更新所有
【发布时间】:2017-04-28 11:23:16
【问题描述】:

我正在使用 Mongoose,并且需要根据一些计算更新许多文档。

如果我是一个一个查询的话这很容易,但是如果我说50个项目,我不想一个一个查询和更新

我正在做的是策划一个查询以拉回多个文档,这样我就可以遍历它们并进行更改。

但是,您不能像使用 findOne 那样对多个对象调用 save。这是我第一次使用 Mongoose,但在 Entity Framework 中,我可以编辑查询返回的结果并调用 saveChanges() 来更新每个已更改的项目

我想做这样的事情

item.find(query).exec(function(err, items) {
  for (i in items) {
     // change stuff
  }
  items.save(function (err) {
    // saved
  }
}

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    如果你使用 Promise 库,你可以这样做:

    var Promise = require('bluebird');
    var saveQuery=[];
    item.find(query).exec(function(err, items) {
      for (i in items) {
         // change stuff
      }
    saveQuery.push(item.save()); // Write your save query
    }
        return Promise.all(saveQuery); // this will do your all save queries at once simultaneously.  
    

    【讨论】:

      【解决方案2】:

      如果您尝试对这些文档进行一些简单的更改,也许

      update({_id:{$in:[a,b,c]}}, {$inc:{score:1}}, {multi:true}).exec() 可以提供帮助。

      【讨论】:

        猜你喜欢
        • 2021-11-30
        • 2016-05-14
        • 2018-09-08
        • 2017-10-05
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 2019-07-26
        • 2020-10-18
        相关资源
        最近更新 更多