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)
但我无法通过限制更新请求的条件。 有办法吗?
答案 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}})
希望能帮到你!