FindAndUpdate前5个文件

时间:2018-02-15 19:16:53

标签: mongodb findandmodify

我希望在MongoDB中找到FindAndModify不超过5个文档的方法。

这是将从多个工作人员处理的队列集合,因此我想将其置于单个查询中。

虽然我无法控制 UpdateOptions 参数中的更新量,但是可以限制在filterDefinition中找到的行数吗?

1 个答案:

答案 0 :(得分:1)

问题1:根据文档,findAndModify()一次只能更新一个文档。这是MongoDB实现的固有限制。

问题2:无法使用任何类型的简单update()查询更新特定数量的任意文档。您可以根据multi选项的布尔值更新一个或全部,但就是这样。

如果您想一次更新最多5个文档,则必须首先检索这些文档然后更新它们,或者在foreach()调用中单独更新它们。无论哪种方式,你要么使用类似的东西:

db.collection.update(
    {_id: {$in: [ doc1._id, doc2._id, ... ]}},
    { ... },
    {multi: true}
);

或者你会使用类似的东西:

db.collection.find({ ... }).limit(5).forEach(function(doc) {
    //do something to doc
    db.collection.update({_id: doc._id}, doc);
});

无论您选择采用哪种方法,都将成为一种解决方法。同样,这是一个固有的限制。