【问题标题】:Update ALL and return ALL matching documents from mongodb using pymongo使用 pymongo 从 mongodb 更新 ALL 并返回所有匹配的文档
【发布时间】:2017-02-26 15:42:40
【问题描述】:

我想使用 pymongo 从 MongoDB 获取所有更新的文档。

我尝试使用 findOneAndUpdate() 但它只更新一个文档。 也尝试过使用MongoDB js服务器功能,但速度太慢,大多不推荐。

    db.system.js.save({
      _id: "distributedTaskQueue",
      value : function(coll,status,limit,fromStatus,toStatus) {
        records = db.getCollection(coll).find({status:fromStatus}).limit(limit)

         results.forEach (function(record){
                record[status]= toStatus
                db.getCollection(coll).save(record);
         })
         return records;
      }
    })

我们的想法是在 100 台服务器上使用 pymongo 来获取文档进行处理。

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    您正在寻找update_many - http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.update_many

    通过status 查找并使用$set 更新toStatus

    手动迭代文档会很慢而且效率很低。

    【讨论】:

    • 据我了解,update_many 不会将匹配的整个文档返回给 python。
    • 您可以从它返回的UpdateResult 对象中获取upserted_id。很遗憾,您无法获得完整的文档。
    • 谢谢。如果没有其他可能,我将不得不使用它。我将处理使用 python 获取的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2017-07-03
    • 2021-12-04
    • 2021-11-30
    • 2015-08-27
    • 2021-01-01
    • 1970-01-01
    相关资源
    最近更新 更多