#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
и javascript2. @Takis_ я бы предпочел придерживаться
$function
. Возможно , с этим можно было бы согласиться$fieldName
, но сложная операция-это много кода, и я хотел бы сохранить ее в одной отдельной функции. Не могли бы вы привести небольшой пример того, как я могу его использовать$function
?3. документация mongodb очень хороша для $function$ , для обновления конвейера