python - 通过匹配_id更新MongoDB集合

标签 python mongodb mongodb-update

我正在尝试使用 _id 上的条件从 Python 更新 mongodb 集合

就像,如果我在 python 数据框中找到 _id 的匹配项,我需要更新集合中相应的文档 下面的脚本可以工作,但是如果文档太多,执行需要时间,是否有任何有效的方法来处理这个问题。请指教

for document in db.AMTicketData.find():
    for index, row in AMTicketData1.iterrows():
        if(row['_id']==a['_id']):
            db.AMTicketData.update_one({'_id': row['_id']},{'$set': {'Application_Name': row['Application_Name']}}, upsert=True)
            break

我使用了下面的批量操作代码,能够批量更新集合

bulk = db.AMTicketData.initialize_unordered_bulk_op()
for index, row in AMTicketData1.iterrows():
    bulk.find({'_id':row['_id']}).update_one({'$set':{'Application_Name':row['Application_Name']}})

bulk.execute()

最佳答案

您可以尝试使用批量写入。您只需创建一个包含所有更新的数组,并使用 collection.bulk_write(list_of_updates) 应用一次

类似于:

updates = []
for document in db.AMTicketData.find():
   for index, row in AMTicketData1.iterrows():
     if(row['_id']==a['_id']):
      updates.append(UpdateOne({'_id': row['_id']}, {'$set': {'Application_Name': row['Application_Name']}}, upsert=True)
      break

db.AMTicketData.bulk_write(updates)

https://docs.mongodb.com/manual/core/bulk-write-operations/

关于python - 通过匹配_id更新MongoDB集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267281/

相关文章:

node.js - Mongodb 身份验证应用程序 - db.auth()

mongodb - 如何将两个集合中的所有文档与数百万文档进行比较,并将差异写入 MongoDB 的第三个集合中

c# - MongoDB - 无法在元素 {ParentProperty : is null} 中创建字段 'ChildProperty'

javascript - Mongoose - 如何在嵌套的对象数组中推送对象

python - opencv中读取并显示多张图像

python - 'int'对象不是可迭代的python暴力破解密码

node.js - 如何在查询另一个模型后添加虚拟字段

mongodb - Mongodb文档深度更新

python - 如何计算第一和第三四分位数?

python - 更新 Django 模型对象的多个字段的有效方法