Пн go агрегат не обновляет фактический документ - PullRequest
1 голос
/ 20 июня 2020

Как видно из приведенного ниже примера, когда я выполняю агрегирование, он выдает требуемый результат, но фактический результат не получает замен. Могут ли кто-нибудь сказать мне, как сохранить агрегат o / p?

1 Ответ

2 голосов
/ 20 июня 2020

Агрегат должен читать данные из коллекции. Вы можете записать вывод в другую коллекцию , используя этап $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 }.

...