
用mongodb中的aggregate统计数据:
应用一:统计name的数量和总数;
1 2 3 | db.collection.aggregate([
{$ group :{_id: "$name" , count :{$ sum :1},total:{$ sum : "$num" }}
]);
|
应用二:统计status=1的name的数量;
1 2 3 4 | db.collection.aggregate([
{$match:{status:1}},
{$ group :{_id: "$name" , count :{$ sum :1}}}
]);
|
应用三:统计name的数量,并且数量为小于2的;
1 2 3 4 | db.collection.aggregate([
{$ group :{_id: "$name" , count :{$ sum :1}},
{$match:{ count :{$lt:2}}}
]);
|
应用四:统计stauts=1的name的数量,并且数量为1的;
1 2 3 4 5 | db.collection.aggregate([
{$match:{status:1}},
{$ group :{_id: "$name" , count :{$ sum :1}}},
{$match:{ count :1}}
]);
|
多列group,根据name和status进行多列
1 2 3 4 5 6 7 8 | 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:分割嵌入数组到自己顶层文件