Bulk upsert not working pymongo



我试图更新文档,如果它存在,如果它不存在于集合中插入。我插入熊猫数据框记录作为文档的集合基于_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()

最新更新