У меня есть документ следующей структуры.
{
name: "John Doe",
City : "OK",
Prepaid: "Y"
},
{
name: "Jane Doe",
City : "CA",
Prepaid: "N"
},
{
name: "Jule Doe",
City : "OK",
Prepaid: "N"
},
{
name: "Jake Doe",
City : "OK",
Prepaid: "Y"
}
Я хотел бы сгруппировать это сначала по городу, а затем по предоплате и получить индивидуальное количество для каждого типа предоплаты. Нечто похожее на это.
{
City : OK
Count : {
"filter": prepaid,
"count": {
Y : 2
N: 1
}
}
}
{
City : CA
Count : {
"filter": prepaid,
"count": {
Y : 0
N: 1
}
}
}
Я попытался выполнить агрегирование по нескольким полям, и это дает мне общее количество документов, а не разбивки.
Вот что я попробовал для моего конвейера агрегации:
db.collection.aggregate([
{$match:matchquery
},{$group:{_id:{city: '$city', prepaid: '$prepaid' }, count:{$sum:1}
}}
])