mongoDB学习 mongo的聚合框架、join

MongoDB 聚合框架(Aggregation Framework)是一个计算框架,它可以:

作用在一个或几个集合上;

  • 对集合中的数据进行的一系列运算;

  • 将这些数据转化为期望的形式;

从效果而言,聚合框架相当于 SQL 查询中的:

  • GROUP BY
  • LEFT OUTER JOIN
  • AS等
整个聚合运算过程称为管道(Pipeline),它是由多个步骤(Stage)组成的
每个管道:
  • 接受一系列文档(原始数据);
  • 每个步骤对这些文档进行一系列运算;
  • 结果文档输出给下一个步骤;

pipeline = [$stage1, $stage2, ...$stageN];
db.<COLLECTION>.aggregate(
    pipeline,
    { options }
);

常见的stage步骤

步骤 作用 SQL等价运算符
$match 过滤 WHERE
$project 投影 AS
$sort 排序 ORDER BY
$group 分组 GROUP BY
$skip/$limit 结果限制 SKIP/LIMIT
$lookup 左外连接 LEFT OUTER JOIN

 常见步骤中的运算符

$match $project $group
$eq/$gt/$gte/$lt/$lte
$and/$or/$not/$in
$geoWithin/$intersect
……
选择需要的或排除不需要的字段
$map/$reduce/$filter
$range
$multiply/$divide/$substract/$add
$year/$month/$dayOfMonth/$hour/$minute/$second
……
$sum/$avg
$push/$addToSet
$first/$last/$max/$min
……

  其他功能

 

步骤 作用 SQL等价运算符
$unwind 展开数组 N/A
$graphLookup 图搜索 N/A
$facet/$bucket 分面搜索 N/A

比如展开数据就有妙用,可以将内嵌文档展开为多行数据。

使用示例:

条件过滤步骤 $match

  投影步骤 $project

  展开数据步骤 $unwind

  分组聚合步骤 $group 

 

mongoSQl特有步骤$bucket

$Facet组合$bucket

 

 




猜你喜欢

转载自www.cnblogs.com/yanghaolie/p/13164367.html