簡體   English   中英

通過匹配_id更新MongoDB集合

[英]Update MongoDB collection by matching _id

我正在嘗試使用_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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM