Mongodb - 更新部分文档数量

时间:2012-03-20 02:30:34

标签: mongodb

Mongodb可以限制一次性更新的文档数量吗?

我有按插入日期列出的项目顺序(即_id),我只想更新(例子)5个最旧的项目。

我可以检索我想要的通知

db.mycoll.find({}).limit(5)

我可以更新一个(因此循环上一个查询的结果)或全部(或使用组合)

db.mycoll.update({"_id" : ObjectId("4f672a5175fa1c01c100001d")}, {$set: {'b' : 'test'}}, false, true)
db.mycoll.update({}, {$set: {'b' : 'test'}}, false, true)

但我无法通过限制更新请求的条件。 有办法吗?

2 个答案:

答案 0 :(得分:2)

不幸的是,你可以看一下:how-to-limit-number-of-updating-documents-in-mongodb

  

不幸的是,您拥有的解决方法是AFAIK的唯一方法。有一个布尔标志multi,它将更新所有匹配(当为true时)或更新第一个匹配(当为false时)。

答案 1 :(得分:0)

你可以这样做

首先获取所有要更新的记录

var mycolls = db.mycoll.find({}).limit(5)

然后,映射这些记录的 id

var mycollIDs = mycolls.map(x=>x._id)

使用 updateMany 更新所有这些记录

db.mycolls.updateMany({_id:{$in:mycollIDs}},{set:{UPDATE DATA}})

希望能帮到你!

相关问题