db.device_state.aggregate([
{
$project:{
deviceId:1,
ctype:{$ifNull:["$ctype",0]},
accstate:"$acc_state",
status:1,
merchantId:1
}
},
{
$match:{
// merchantId:"111222"
}
},
{
$group:{
_id:"$merchantId",
allStatus:{
$sum:"$status"
},
allAccstate:{
$sum:"$accstate"
}
}
}
])
表的结构如下
$project 就是你要查询出表里面的哪些字段,可以重新命名,也可以用表达式如相乘$multiply 相加$add 相除$divide等
$match
为查询条件,用法跟find一样,要注意的是,如果查询条件有索引,project里面给重新命名了,为了查询速度,则需要将match放在前面
$group
分组聚合,_id 是必须要有的,如果没有写则默认采用mogo里面的id,如果不想带则 _id:0即可,比如上面的查询条件出来的结果为