0

我正在寻找一种在 MongoDB 中 FindAndModify 不超过 5 个文档的方法。

这是队列的集合,它将由多个工作人员处理,因此我想将其放入单个查询中。

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

4

1 回答 1

2

问题 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);
});

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

于 2018-02-15T20:06:33.833 回答