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即可,比如上面的查询条件出来的结果为

本文解析了一段关于MongoDB数据库的聚合操作,展示了如何使用$project, $match和$group阶段进行数据筛选和汇总,特别关注了表结构和查询条件的应用。适合了解MongoDB查询技巧的开发者阅读。
916

被折叠的 条评论
为什么被折叠?



