Предположим, что это наша коллекция.
[{
_id: 1,
Reviews: [{Author: 'elad' , txt: 'good'}, {Author: 'chen', txt: 'bad'}]
},
{
_id: 2,
Reviews: [{Author: 'elad', txt : 'nice'}]
}]
, чтобы получить нужные вам данные, нам нужно сначала использовать этап размотки, а затем групповой этап.
[{ $unwind: '$Reviews' }, {$group : { _id : '$Reviews.Author', count : {$sum : 1}}}]
Сначала необходимо развернуть коллекцию в поле «Отзывы».после этапа раскрутки наши данные в конвейере будут выглядеть так:Теперь его легко группировать полезными способами, как вы хотите.Теперь мы можем использовать ту же группу, которую вы написали, и мы получим результаты.
после группы наши данные будут выглядеть следующим образом:
[{_id: 'elad',sum:2},{_id: 'chen', sum: 1}]
Размотка - это очень важный этап конвейера в структуре агрегации.Это помогает нам преобразовывать сложные и вложенные документы в простые и простые, что помогает нам запрашивать данные различными способами.
Что такое оператор $ unwind в MongoDB?