Поскольку вам необходимо отфильтровать вложенные документы из документов, просто find
не будет работать для фильтрации вложенных документов.
Вы должны использовать конвейер агрегации , как показано ниже:
> db.st9.aggregate([
{
$unwind:"$market"
},
{
$match: {"market.type":"sell"}
},
{
$group: {_id:"$market.console", "avg": {$avg:"$market.amount"}, "count": {$sum:1}, "totalSum": {$sum: "$market.amount"} }
}
])
Вывод:
{ "_id" : "PS4", "avg" : 300, "count" : 1, "totalSum" : 300 }
{ "_id" : "Xbox", "avg" : 359, "count" : 3, "totalSum" : 1077 }
>
Для получения дополнительной информации о проверке конвейера агрегации ниже официальногоДокументация mongo db:
- $ unwind
- $ match
- $ group