簡體   English   中英

批量upsert不工作pymongo

[英]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.

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