python - 批量更新不工作pymongo

标签 python mongodb mongodb-query 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()

关于python - 批量更新不工作pymongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40464673/

相关文章:

Python 多重赋值和引用

mongodb - Mongo 数据库操作中的批量插入和数组插入有什么区别

python - 在 Linux 上使用 cx_freeze 卡住共享对象

python - 在 Google Colab 的 shell 脚本中连接命令字符串

python - 在多进程中使用一张图运行 tensorflow

python - mongodb:如果不存在则插入

mongodb - 从 Mongo DB 嵌套数组中获取不同的值并输出到单个数组

javascript - 如何仅将错误消息从模型传递到 Controller (Mongoose)?

javascript - 我们可以用 Mongoose 检索 Node js中两个表的数据吗

mongodb - 在 MongoDB 中查找 2 级嵌套数组