通过匹配 _id 更新 MongoDB collection
Update MongoDB collection by matching _id
我正在尝试使用 _id
上的条件从 Python 更新 mongodb collection
就像我在 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
我使用了以下批量操作代码,能够批量更新collection
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)
我正在尝试使用 _id
上的条件从 Python 更新 mongodb collection就像我在 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
我使用了以下批量操作代码,能够批量更新collection
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)