Я использую pymon go для работы с mongodb. Проблема в том, что мне нужно обновить множество записей коллекции в mongodb по списку идентификаторов.
Существует коллекция abcd
со следующей структурой:
{'id': 'someid1', 'order': 0}
{'id': 'someid2', 'order': 0}
...
{'id': 'someidN', 'order': 0}
Мне нужно изменить поля order
на значения, собранные в dict mapping
.
mapping = {'someid1': 5, 'someid2': 7, ..., 'someidN': 50}
Самый очевидный способ (может быть неверным, так как это заняло много времени, и я прервал процесс):
for key, value in mapping.items():
db.abcd.update_one({'id': key}, {'order': {'$set': value}})
Но как я вижу, это очень трудоемко. Есть ли какой-нибудь умный способ установить значения по списку значений? Что-то вроде этого (следующий код глуп и работает не так, как я ожидал):
db.abcd.update_many({'id': list(mapping.keys())}, {'order': {'$set': list(mapping.values())})
Я читал документы mongodb, но нашел только примеры с «условием» (например, изменить поле с тем же значением, если условие правда). Я предполагаю, что есть эффективный способ «сопоставить» значения сразу нескольким идентификаторам. Я новичок в mongodb (и pymon go), поэтому вопрос, вероятно, довольно глупый. Спасибо.