MongoDB 聚合操作及索引
聚合操作
- 单一聚合
- 管道聚合,流水线操作
- MapReduce(弃用)
单一聚合
方法 | 说明 |
---|---|
count() | 统计,等同于 find(query).count() |
distinct() | 查找字段不同值 |
estimatedDocumentCount() | 所有文档计数 |
管道聚合
什么是聚合框架
- 作用在一个或几个集合上
- 对集合进行系列运算
- 将数据转化为期望值
管道 (Pipeline) 和阶段 (Stage)
聚合运算过程称为管道,有多阶段组成
1 | pipeline = [$stage1,$stage2]; |
$project
** 投影 **,取别名
1 | db.books.aggregate([{$project:{name:"$title"}}]) // title-> name |
$match
** 筛选 **,尽可能放前面
1 | db.books.aggregate([ |
$count
** 统计 **,放入对应的字段中
1 | db.books.aggregate([ |
$group
** 分组 **,并将结果集输出至下一阶段
1 | {$group : {_id : <expression>, <field1> : { <accumulator1> : <expression1>}}} |
$unwind
** 拆分 **,将数组拆分为单独文档
$limit
$skip
$sort
$lookup
左连接