mongodb分组统计

it2022-05-05  141

一、对字段(protocol)下的不同类型进行分组统计: db.getCollection('xxx').aggregate([     { "$group": {         "_id": {             "protocol": "$protocol"         },         "protocolCount": { "$sum": 1 }     }} ]) 或 db.getCollection('bp0501_dev').aggregate([     { "$group": {         "_id": "$protocol",         "protocolCount": { "$sum": 1 }     }} ])

加过滤: db.getCollection('bp0501_dev').aggregate([     {"$match":{"userid":"bbdz"}},     { "$group": {         "_id": "$protocol",         "protocolCount": { "$sum": 1 }     }} ])

对应的mongodbTemplate写法:

field是要统计的字段名(对应上边的protocol字段,protocolCount是统计名称),tbName是对应的表名("xxx")

----都是String类型

Aggregation agg = Aggregation.newAggregation( Aggregation.group(field).count().as("sum") ); AggregationResults results = ppmongoTemplate.aggregate(agg,tbName, BasicDBObject.class); List list = results.getMappedResults();

二、统计userid(字段,类型是数组)内相同数据出现的次数: db.getCollection('xxx').aggregate( [     {$unwind:"$userid"},    {$group:{_id:"$userid",count:{$sum:1}}},    {$project:{_id:0,count:1,userid:"$_id"}}  ])

加分页: db.getCollection('bp0501_dev').aggregate( [     {$unwind:"$userid"},    {$group:{_id:"$userid",count:{$sum:1}}},    {$project:{_id:0,count:1,userid:"$_id"}},    {$skip:0},    {$limit:5} ])

对应的mongodbTemplate写法:

Aggregation agg = Aggregation.newAggregation( Aggregation.unwind(field), Aggregation.group(field).count().as("sum") );

注:默认会把分组的字段放在_id 上,(这里_id:0)去掉(及修改)_id字段名为userid,  查询出来的统计字段是sum,而count:1是修改名字sum为count

{$unwind:"$userid"}   //分解userid这个数组

 {$project:{_id:0,count:1,userid:"$_id"}}    //这句小编还不知怎么写

详细请看下面的链接

如:

1、修改前

[

   {         "_id": "5ce745712bd4f9d6f374e620",         "sum": 5     }

]

2、修改后

[

  {       "count" : 5.0,       "userid" : "5ce745712bd4f9d6f374e620"   } ]

由于表数据不能复制和转载,在这里直接分享博主的连接,大家自己看吧,这里只做分享:

原文来自:https://blog.csdn.net/weixin_43678764/article/details/85262969

                  https://blog.csdn.net/ruoguan_jishou/article/details/79289369

MongoDB统计文档(Document)的数组(Array)中的各个元素出现的次数

https://www.cnblogs.com/hapjin/p/7944404.html


最新回复(0)