Существует ли (простой) способ обновить множество документов в базе данных mongo при изменении документов на основе их текущего значения?

#mongodb

Вопрос:

В принципе, я хочу (псевдокод):

 def getNewAttribute(based_on):
    return some_complex_operation_with(based_on)

ids = some_list_that_contains_ids_of_existing_documents
mongodb.some_documents.updateMany(
        {'_id': {'$in': ids}},
        { '$set': {'some_attribute': getNewAttribute(based_on=current_some_attribute_value)}}
    )
 

Поэтому я не хочу обновлять документ каким-то статическим новым значением, а скорее новым значением, которое зависит от старого значения этого конкретного документа.

Комментарии:

1. вы можете сделать это, используя ссылки «$fieldName», используя обновление конвейера(например, агрегирование, но обновление), если операцию можно выполнить с помощью операторов агрегирования. Если нет, вы все еще можете использовать $function и javascript

2. @Takis_ я бы предпочел придерживаться $function . Возможно , с этим можно было бы согласиться $fieldName , но сложная операция-это много кода, и я хотел бы сохранить ее в одной отдельной функции. Не могли бы вы привести небольшой пример того, как я могу его использовать $function ?

3. документация mongodb очень хороша для $function$ , для обновления конвейера