Mongo DB分组依据,带条件计数

时间:2019-01-21 12:17:00

标签: mongodb mongodb-query aggregation-framework

使用Mongodb,我希望获得每个特定区域(按区域分组)的传感器值大于100且传感器值小于100的计数。

我有一个sensorValue属性,它有4个子属性。 1)sensorValue(值将为100、200 122、80等)-我想知道每个区域的计数高于100而低于100。 2)纬度 3)经度 4)Region(地区名称)-我要对该地区进行计数。

借助stackoverflow,我编写了以下查询。

var expander=hs.getExpander(jq('#my_popup_id_HS')[0]);
hs.maxHeight=600;
expander.reflow();

我不确定如何在“ $ project”选项下处理子属性“ sensorValue.regoin”。如果我缺少某些内容,请告诉我。

Sample Document is attached

1 个答案:

答案 0 :(得分:0)

您可以尝试通过以下汇总获得结果

db.t66.aggregate([
    {$group: {
        _id : "$sensorValue.region", 
        lessThan : {$sum : {$cond: [{$lt : [{$toInt : "$sensorValue.sensorValue"}, 50]}, 1,0]}},
        greaterThan : {$sum : {$cond: [{$gte : [{$toInt : "$sensorValue.sensorValue"}, 50]}, 1,0]}},
    }}
])

如果$toIntsensorValue数据类型,则可以删除int