Как я могу выполнить массовый запрос на повышение с помощью Pymongo?

#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)