通过匹配_id更新MongoDB集合

时间:2019-03-20 17:54:02

标签: 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()

1 个答案:

答案 0 :(得分:2)

您可以尝试使用批量写入。您只需要创建一个包含所有更新的数组,然后使用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/