Mongodb Aggregation group()分组操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb Aggregation group()分组操作相关的知识,希望对你有一定的参考价值。

参考技术A

Mongo的分组操作有两种方式: aggregate($group:) group()

$group: _id: <expression>, <field1>: <accumulator1> : <expression1> , ...

为必选字段,为被分组字段,可为空或null

为可选字段,其中可包含一下运算符:

1.仅分组,对issue_xjtf表中sp1,sp2进行分组

相当于sql

db.collection.group( key, reduce, initial [, keyf] [, cond] [, finalize] )
前三个是必备参数,“[]”中是可选参数

可以放用来分组的字段,并且会返回其中字段(group by 后面的字段)

是在分组操作期间对文档进行操作的聚合函数。可以返回总和或计数。该函数有两个参数:当前文档;该组的聚合结果文档。

对结果中文档,字段进行初始化

对数据筛选的条件,相当于where

1. count :取xbgi表中,article_pubdate值大于2000-01-01的数据,并分组计数

2. max :取sjwd表中,ric_publication_coden为9529a8f7-3eef-431a-a0cd-e49d601417df,用article_year分组计数,取其最晚日期。

3. sum :在表total_journal_issue中以journal_id分组,并获取article_count总数

用Navicat 执行group()时,分组值超过20000,会报如下错误(未检测具体原因):

MongoDB 学习笔记之 Aggregation Pipeline

Aggregation Pipeline:

 

常用操作符介绍:

 

$project:包含、排除、重命名和显示字段

$match:查询,需要同find()一样的参数

$limit:限制结果数量

$skip:忽略结果的数量

$sort:按照给定的字段排序结果

$group:按照给定表达式组合结果

$lookup: 左连接

$unwind:展开嵌入数组

 

定义comments和leftT集合:

 

$project:

$match:

$limit:

$skip:

$sort:

$group:

 

 $lookup:

 

 $unwind:

 

以上是关于Mongodb Aggregation group()分组操作的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 学习笔记之 Aggregation Pipeline

MongoDB $reduce(aggregation) 组与数组中嵌套文档的总和并按组计数

MongoDB 聚合管道(Aggregation Pipeline)

MongoDB 聚合比较:group()、$group 和 MapReduce

mongodb去重

MongoDB Aggregation