как обновить все документы после агрегации mongodb? - PullRequest
0 голосов
/ 02 июня 2019

У меня есть две коллекции A и B , и у меня есть ссылка на поле в другой коллекции B , поэтому агрегирование двух результатов приводит к:

[{"name":"Adam","Average-Count":"20.22","price":"24","_id":2}, ...]

Документы в коллекции А:

[{"name":"Adam","Average-Count":"0","Last-Name":"Smith","_id":2},....]

Я хочу обновить все значения по умолчанию поля среднего количества в коллекции A, чтобы исправить значение, которое я получил после агрегации Это способ обновления всех документов в одном запросе или мы можем обновить документы в конвейере агрегации?

1 Ответ

0 голосов
/ 10 июля 2019

Есть ли способ обновить все документы в одном запросе или мы можем обновить документы в конвейере агрегирования?

Начиная с MongoDB 4.2, команда обновления может использоватьконвейер агрегации для обновления.На данный момент конвейер может состоять из следующих этапов: $ set , $ unset и $ replaceWith .

Поскольку ваш вопрос включает в себя сначала объединение коллекций в конвейере с этапом $ lookup , поскольку в настоящее время этот этап не поддерживается, вы можете либо:

  • Изменить модель данных документа для объединения коллекции и использования обновления с конвейером агрегирования.
  • Сохраните модель данных и используйте $ merge стадия агрегирования

$merge может включать результаты (вставка новых документов, объединение документов, замена документов, сохранение существующих документов, сбой операции, обработка документов с помощью настраиваемого конвейера обновления) в существующую коллекцию .Например:

{ "$merge": { 
     into: "A", 
     on: "_id", 
     whenMatched: "replace", 
     whenNotMatched: "insert" 
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...