#python #python-3.x #mongodb #pymongo
#python #python-3.x #mongodb #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. Заранее спасибо!
Комментарии:
1. вы пробовали эту операцию массовой записи
Ответ №1:
В вашем случае вам нужно использовать массовые операторы 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)