node.js - 在 Node 中使用 mongoosejs 更新多条记录

标签 node.js mongodb mongoose

我在使用 mongoosejs 和 Node 更新多条记录时遇到问题。出于某种原因,即使有多个匹配项,我也只更新一条记录。我还注意到回调不会在 .update() 之后触发。我没有收到任何错误消息。这是怎么回事?

Page.find({status:'queued'})
    .limit(queue_limit-queue.length)
    .update({ status: 'active' },{ multi: true },function(err,num){
        console.log("updated "+num);
        //this callback will never fire, but a single record will be updated and marked as active.                                                                                                 
    });

最佳答案

Query#update不接受 options 参数,但是 Model.update做。所以你想将其重写为:

Page.update({status:'queued'}, {status: 'active'}, {multi: true}, 
    function(err, num) {
        console.log("updated "+num);
    }
);

我不确定您尝试对链中的 limit 调用做什么,但您不能在更新中使用它。

更新

以上查询将更新所有 {status: 'queued'} 的文档。 update 的唯一选择是第一个匹配的 {multi: false} 或所有匹配的 {multi: true}

听起来您需要返工,一次从队列中取出一个文档并切换到 findOneAndUpdate而不是 update,因此您可以访问已从 'queued' 更新到 'active' 的文档。

关于node.js - 在 Node 中使用 mongoosejs 更新多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674170/

相关文章:

php - api-platform odm iri 引用不会被转换成 json 中的对象

MongoDB 使用 C# 从文档中仅检索匹配的子文档

javascript - Mongoose :如何更新数组中的现有元素?

node.js - 为什么我的nodejs脚本没有退出到shell?

javascript - 如何在 node.js 应用程序 heroku 中访问 .env 文件中的变量

mongodb - 动态 node.js 内容

node.js - 如何在特定时区保存 Mongoose 日期时间

javascript - 如何将 async/await 与多个相关集合一起使用

javascript - node-fetch 接收空主体

javascript - NodeJS/MongoDB 唯一值检查