【问题标题】:Mongoose update previously fetched collectionMongoose 更新之前获取的集合
【发布时间】:2014-01-01 16:13:38
【问题描述】:

我想更新一个集合。文档似乎对此不清楚。

我想知道如何实现以下目标:

Order.find({ _id: { $in: ids }}).exec(function(err, items, count) {
  // Following gives error - same with save()
  items.update({ status: 'processed'}, function(err, docs) {

  });
});

我知道如何像这样批量保存:

Model.update({ _id: id }, { $set: { size: 'large' }}, { multi: true }, callback);

但这需要重新设置我的查询。

我也试过了:

Order.collection.update(items...

但这会引发最大调用堆栈错误。

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    mongoosemodel.find(callback) 中,通过回调返回DocumentArray。您可以通过Document 拨打save,但不能拨打Array。所以你可以在Array 上使用for loopforEach

     Order
     .find({ _id: { $in: ids}})
     .exec(function(err, items, count) {
        items.forEach(function (it) {
            it.save(function () {
                console.log('you have saved ', it)
            });
        })
     });
    

    【讨论】:

    • 是的,谢谢 - 我知道该怎么做。想知道具体的收藏更新。目前使用上面的 Model.save 让我在一行上完成所有操作,但我必须再次查询。问题更多是关于学习 Mongoose 的一些内部工作原理
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2017-06-05
    相关资源
    最近更新 更多