添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
旅途中的西装  ·  RecyclerView ...·  2 月前    · 
霸气的蘑菇  ·  mysql数据库log-slave-upda ...·  1 年前    · 
失恋的煎鸡蛋  ·  JavaScript ...·  1 年前    · 
坏坏的手术刀  ·  vue.js ...·  1 年前    · 
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 博客园 【mongoDB查询进阶】聚合管道(一) -- 初识
3 0

海报分享

【mongoDB查询进阶】聚合管道(一) -- 初识

https://segmentfault.com/a/1190000010618355

前言:一般查询可以通过find方法,但如果是比较复杂的查询或者数据统计的话,find可能就无能为力了,这时也许你需要的是aggregate.

什么是聚合管道(aggregation pipeline)

英文文档中是aggregation pipeline,直译为聚合管道,它可以对数据文档进行变换和组合。聚合管道是基于数据流概念,数据进入管道经过一个或多个stage,每个stage对数据进行操作(筛选,投射,分组,排序,限制或跳过)后输出最终结果。

解释
  • orders是一个文档集合
  • aggregate是聚合方法,参数是数组,每个数组元素的就是一个stage,对数据进行处理,处理完流到下一个stage
  • $match是匹配操作符,筛选出status是A的文档
  • $group是分组操作符,以cust_id为分组条件,相同的cust_id分为同组
  • $sum是算术操作符,{ $sum: '$amount' }表示分组后,计算amount的总和。

管道操作符介绍

mongoDB中有许多操作符,在aggregate中每个stage可以使用的操作符叫做管道操作符,以下列举比较常用的管道操作符:

操作符

简述

$project

投射操作符,用于重构每一个文档的字段,可以提取字段,重命名字段,甚至可以对原有字段进行操作后新增字段

$match

匹配操作符,用于对文档集合进行筛选

$group

分组操作符,用于对文档集合进行分组

$unwind

拆分操作符,用于将数组中的每一个值拆分为单独的文档

$sort

排序操作符,用于根据一个或多个字段对文档进行排序

$limit

限制操作符,用于限制返回文档的数量

$skip

跳过操作符,用于跳过指定数量的文档

$lookup

连接操作符,用于连接同一个数据库中另一个集合,并获取指定的文档,类似于populate

$count

统计操作符,用于统计文档的数量