【发布时间】:2017-10-09 10:40:10
【问题描述】:
我正在尝试尽可能高效地实现以下查询,因此我使用的是 Mongodb Aggregation 框架。
我有一个名为 mydevices 的集合,其中包含文档,每个文档都代表以下格式的设备:
{
BUILDING: 'stringValue',
DEVICECLASS: 'stringValue',
}
我试图实现的输出是每个 BUILDING 的数组,其中包含每个类别中每个 DEVICECLASS 的设备数,例如
'building xy': {
'mobile phone': 5,
'destkop': 3
}
到目前为止我所尝试的:
collection.aggregate(
[
{
$group:{ // group by building
_id: {BUILDING},
DEVCLASS: {DEVCLASS} // save devclass as property
}
}
]
)
似乎$count 运算符对我的情况没有帮助?
$count 返回一个文档,其中包含输入到阶段的文档数的计数。
我已经阅读了文档,但现在我被困住了。怎样才能达到效果?
【问题讨论】:
-
试试
collection.aggregate( [ { $group:{ _id: {BUILDING:"$BUILDING",DEVICECLASS:"$DEVICECLASS"} COUNT: {$sum:1} } } ] ) -
@Veeram 使用这个我只得到所有设备的总数,而不知道给定设备类中某个位置的设备数
标签: mongodb mongodb-query aggregation-framework