在节点中使用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'
的文档。