Я пытаюсь подсчитать различные значения в MongoDB, но я не получаю ожидаемых результатов.Подсчет отдельных значений в MongoDB
Вот пример данных:
{
"_id" : ObjectId("55d354b0d5cec8aad571b8fe"),
"version" : "0.4",
"scan-time" : {
"start" : 1439913109,
"end" : 1439913136
},
"services" : [
{
"service-type" : "SV1",
"service-version" : "V1",
"location" : {
"ipv4-address" : "192.168.1.1",
"protocol" : "tcp"
},
"classification-method" : "probed"
},
{
"service-type" : "SV1",
"service-version" : "V2",
"location" : {
"ipv4-address" : "192.168.1.2",
"protocol" : "tcp"
},
"classification-method" : "probed"
},
{
"location" : {
"ipv4-address" : "192.168.1.3",
"protocol" : "tcp"
},
"classification-method" : "probed",
"service-type" : "SV1",
"service-version" : "V3"
},
{
"service-type" : "SV2",
"service-version" : null,
"location" : {
"ipv4-address" : "192.168.1.4",
"protocol" : "tcp"
},
"classification-method" : "probed"
}
]
}
Я могу перечислить все различные значения, используя этот запрос:
db.collection.distinct("services.service-type")
Однако, я также нужен подсчет. Я попробовал это, но это не дает результаты, я хочу:
db.collection.aggregate(
[
{
$group : {
_id : "$services.service-type",
count: { $sum: 1 }
}
}
]
)
Мне нужно увидеть это:
SV1: 3
SV2: 1
MongoDB версия:
> db.version()
3.0.5
Спасибо за любую помощь!
Вы не должны '$ unwind' документа без '$ project'ing их. – styvane
Большое спасибо, что я искал! – Tomas