用mongodb中的aggregate统计数据:
应用一:统计name的数量和总数;
db.collection.aggregate([ {$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}} ]);
应用二:统计status=1的name的数量;
db.collection.aggregate([ {$match:{status:1}}, {$group:{_id:"$name",count:{$sum:1}}} ]);
应用三:统计name的数量,并且数量为小于2的;
db.collection.aggregate([ {$group:{_id:"$name",count:{$sum:1}}, {$match:{count:{$lt:2}}} ]);
应用四:统计stauts=1的name的数量,并且数量为1的;
db.collection.aggregate([ {$match:{status:1}}, {$group:{_id:"$name",count:{$sum:1}}}, {$match:{count:1}} ]);
多列group,根据name和status进行多列
db.collection.aggregate([ {$group:{_id:{name:"$name",st:"$status"},count:{$sum:1}}} ]); $project该操作符很简单, db.collection.aggregate([ {$project:{name:1,status:1}} ]);
结果是,只有_id,name,status三个字段的表数据,相当于sql表达式 select _id,name,status from collection
操作符介绍:
$project:包含、排除、重命名和显示字段
$match:查询,需要同find()一样的参数
$limit:限制结果数量
$skip:忽略结果的数量
$sort:按照给定的字段排序结果
$group:按照给定表达式组合结果
$unwind:分割嵌入数组到自己顶层文件