[英]Bulk upsert not working pymongo
我正在嘗試更新文檔(如果它存在)並插入(如果它不存在於集合中)。 我將pandas數據框記錄作為文檔插入到基於_id的集合中。 新文檔的插入工作正常,但舊文檔中的字段更新無效。
bulk = pymongo.bulk.BulkOperationBuilder(pros_rides,ordered=False)
for doc in bookings_df:
bulk.find({ "_id": doc["_id"] }).upsert().update({
"$setOnInsert": doc
})
response = bulk.execute()
我錯過了什么?
upsert可以更新或插入文檔; “$ setOnInsert”操作僅在插入文檔時執行, 而不是在更新文檔時執行。 為了更新文檔(如果存在),您必須提供一些將在文檔更新時執行的操作。
嘗試這樣的事情:
bulk = pros_rides.initialize_unordered_bulk_op()
for doc in books_df:
bulk.find({'_id': doc['_id']}).upsert().replace_one(doc)
bulk.execute()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.