我正在寻找一种在FindAndModify中使用MongoDB不超过5个文档的方法。
这是队列的集合,它将由多个工作人员处理,因此我想将其放入单个查询中。
虽然我无法控制UpdateOptions参数中的更新数量,但能否限制将在filterDefinition中找到的行数?
发布于 2018-02-15 20:06:33
问题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);
});无论你选择哪种方法,它都是一种解决办法。同样,这也是固有的限制。
https://stackoverflow.com/questions/48814707
复制相似问题