我在使用 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/