在节点中使用mongoosejs更新多个logging

我无法使用mongoosejs和节点更新多个logging。 出于某种原因,我只更新一个logging,即使多个匹配。 我也注意到,callback不会触发.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调用是怎么做的,但是你不能在更新中使用它。

UPDATE

上述查询将更新{status: 'queued'}所有文档。 只有update唯一select是第一个匹配的{multi: false}或全部匹配{multi: true}

听起来就像你需要重做一次,把文档从队列中取出一个,然后切换到findOneAndUpdate而不是update所以你可以访问你已经从'queued'更新为'active'的文档。