我如何使用 Pymongo 进行批量更新插入查询?

How can i make a bulk upsert query with Pymongo?

我正在使用 Pymongo 在 for 循环上执行一些更新插入查询,但由于执行这些查询需要花费太多时间,我尝试使用批量写入操作来完成相同的任务。但是,我不熟悉语法,我遇到了一些问题:

根据文档,我需要定义一个操作数组,所以我做了以下操作:

Queries = [[{'Unix': 1596873600.0}, {'$set': {'Unix': 1596873600.0, 'O': '11586.08000000', 'H': '11801.72000000', 'L': '11562.17000000', 'C': '11775.52000000', 'V': '9066.55659000', 'market': 'BTCUSDT'}, 'upsert': True}], [{'Unix': 1596888000.0}, {'$set': {'Unix': 1596888000.0, 'O': '11775.52000000', 'H': '11808.27000000', 'L': '11706.39000000', 'C': '11738.10000000', 'V': '6628.24686700', 'market': 'BTCUSDT'}, 'upsert': True}...]]
db['myCol'].bulk_write(Queries)

这给了我一个 is not a valid request 错误。谁能帮我解决这个查询的语法问题?我正在使用 PyMongo。提前致谢!

您需要使用批量运算符,在您的情况下 UpdateOne()

from pymongo import MongoClient, UpdateOne

db = MongoClient()['mydatabase']

Queries = [UpdateOne({'Unix': 1596873600.0}, {'$set': {'Unix': 1596873600.0, 'O': '11586.08000000'}}, upsert=True),
           UpdateOne({'Unix': 1596888000.0}, {'$set': {'Unix': 1596888000.0, 'O': '11775.52000000'}}, upsert=True)]

db['myCol'].bulk_write(Queries)