Коллекция обновлений Mongodb с несколькими документами

У меня есть приложение на Python, которое использует asyncio двигателя и имеет базу данных mongo, содержащую около 10 тыс. Документов; Я довольно часто получаю обновления этой базы данных в виде файлов json: обновление всегда является подмножеством существующих записей, но обычно они содержат новые поля и обновляются до существующих. Размер обновления обычно составляет около 5-6k записей.

В настоящее время я загружаю json обновления, перебираю его и использую каждый элемент для создания массовой операции UpdateOne() и помещаю ее в список, а затем отправляю список в операции bulk_write, например:

requests = []
for dl_card in data_json:
    card_name = dl_card['name']
    requests.append(UpdateOne({"name": card_name}, {"$set": dl_card}))
await db.cards.bulk_write(requests)

В то время как вставка всего начального db из 10k записей занимает всего около 10 секунд, обновление обычно занимает порядка пары минут. Есть ли способ сделать эту операцию более эффективной? В идеале я хотел бы отправить json-обновление без зацикливания.

Заранее спасибо!

0 ответов

Другие вопросы по тегам