微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 批量upsert不工作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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐