Я пытаюсь использовать структуру агрегации для суммирования вложенного массива с вложенным массивом и возврата исходного документа в отсортированном порядке.MongoDB Получить общее количество вложенных массивов в массиве документа
Так вот, что мой документ выглядит следующим образом:
myColl: {
_id: 123,
fruits: [{
name: apple,
buyers: [{buyer1}, {buyer2}]
},
{
name: banana,
buyers: [{buyer1}, {buyer2}, {buyer3}]
]
}
Как вы можете плоды массив поддокументов внутри myColl документа, и покупатели это руга массив поддокументов внутри плодов.
Я хочу, чтобы подсчитать количество покупателей в документе для всех фруктов. Таким образом, в вышеупомянутом документе должны быть покупатели «5».
Затем я хочу отсортировать все документы в myColl у всех покупателей. Я попробовал несколько вещей, и я не могу показаться, чтобы получить это право:
db.myColl.aggregate([
{$unwind: '$fruits'},
{$unwind: '$fruits.buyers'},
{$group: {
_id: '$fruits.buyers',
totalBuyers: {$sum: '1'},
docs: {$push: '$$ROOT'}
}},
{$sort: {'totalBuyers': 1}}])
не дает мне желаемого результата и totalBuyers всегда равен 0. Кроме того, он возвращает мне больше результатов, то общее кол myColl , Я предполагаю, что это как-то связано с полем «_id».
Я рассмотрел некоторые другие вопросы и не смог найти что-то, что соответствует или работает в моем случае.
Мой последний курорт должен будет рассчитать его самостоятельно или создать новое поле, чтобы сделать это, но это сделает мою жизнь намного легче, если я могу просто запустить запрос.