Обновите все поля MongoDB с их собственными значениями с помощью PyMongo - PullRequest
1 голос
/ 27 января 2020

Я хочу обновить каждое поле моей коллекции MongoDB, используя для этого собственное значение поля.

Пример: если у меня есть этот документ: "string": "foo", возможное обновление сделает это: "string": $string.lower() , Здесь $string будет "foo", но я не знаю, как это сделать с PyMon go.

Я пробовал это:

user_collection.update_many({}, { "$set": { "word": my_func("$word")}})

, который заменяет все с "$word".

Я смог успешно выполнить итерацию каждого документа, но это занимает слишком много времени.

1 Ответ

1 голос
/ 27 января 2020

Насколько я знаю, вы не можете найти и обновить в одном операторе функцию python. Вы можете использовать mon go язык запросов:

user_collection.update_many({}, { "$set": {"name": { "$concat": ["$name", "_2"]}}})

или использовать отдельные функции pymon go:

for obj in user_collection.find({some query here}):
    user_collection.update({"_id": obj['_id']}, { "$set": {"name": my_func(obj['name']) } })
...