Агрегат должен читать данные из коллекции. Вы можете записать вывод в другую коллекцию , используя этап $out
или $merge
.
Только начиная с версии v4.4 (пока не доступен по состоянию на 20 июня 2020 г.), вы можете использовать этап $merge
для вывода в ту же коллекцию .
Однако, начиная с версии 4.2, вы можете использовать «обновления с конвейером агрегирования» . Синтаксис конвейера такой же, но вы можете использовать только выбранные этапы.
Ваш запрос может быть преобразован в:
db.demo95.updateMany({}, [ { "$addFields": { "Id" : { "$toObjectId": "$Id" } }} ])
Обратитесь к updateMany с конвейером агрегирования для получения дополнительной информации.
Если у вас есть проблема с updateMany
, вы можете обратиться к другому ответу от @ whoami по другому вопросу:
На данный момент конвейер агрегации в .updateMany()
не поддерживается многими клиентами даже несколькими версиями оболочки mon go - тогда мой билет к ним разрешался с помощью .update()
, если это не так. t работать, тогда попробуйте использовать update + { multi : true }
.