【发布时间】:2015-09-28 14:01:37
【问题描述】:
我尝试在 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
感谢您的帮助!
【问题讨论】:
标签: mongodb aggregation-framework