Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Pymongo进行批量upsert查询?_Python_Python 3.x_Mongodb_Pymongo - Fatal编程技术网

Python 如何使用Pymongo进行批量upsert查询?

Python 如何使用Pymongo进行批量upsert查询?,python,python-3.x,mongodb,pymongo,Python,Python 3.x,Mongodb,Pymongo,我使用Pymongo在for循环上执行一些upsert查询,但是由于查询需要花费太多的时间来执行,所以我尝试使用批量写入操作来执行相同的任务。但是,我不熟悉语法,并且我遇到了一些问题: 根据文档,我需要定义一个操作数组,所以我做了以下工作: Queries = [[{'Unix': 1596873600.0}, {'$set': {'Unix': 1596873600.0, 'O': '11586.08000000', 'H': '11801.72000000', 'L': '11562.170

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

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

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)

这给了我一个
不是有效请求的错误。有人能帮我解释一下这个查询的语法吗?我正在使用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)