【问题标题】:Mongodb - update partial number of documentsMongodb - 更新部分文档数
【发布时间】:2021-06-13 02:05:51
【问题描述】:

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)

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

    不幸的是,您拥有的解决方法是 AFAIK 的唯一方法。有一个布尔标志 multi 将更新所有匹配项(如果为真)或更新第一个匹配项(如果为假)。

    【讨论】:

    • 感谢您的确认,不幸的是,这也是我的印象。
    • 还是这样吗?
    【解决方案2】:

    你可以这样做

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

    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}})
    

    希望这能有所帮助!

    【讨论】:

    • 我想知道这是否适用于 12k id?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多