(一)管道操作符
每个操作符都会接受一连串的文档,对这些文档做类型转换,最后将转换后的文档作为结果传递给下一个操作符,对于最后一个管道操作符,将结果返回客户端。
不同管道操作符可以按任意顺序组合在一起使用,而且可以重复多次使用。
1、”$match”
用于对文档集合进行筛选,应该尽可能将”$match”放在管道的前面位置,可以快速将不需要的文档过滤掉;在投射和分组之前执行”$match”,可以使用索引。
“$match”可以使用所有常规的查询操作符,但是不能使用地理空间操作符。
2、”$project”
使用”$project”操作可以从文档中提取字段,可以指定包含或排除某个字段。
对投射字段进行重命名,使用”$fieldName”语法为了在聚合框架中引用fielaName字段的值,将要被替换名字的字段写成 “$fieldName”。必须明确将”_id”字段排除,否则值会被返回两次:
MongoDB不会记录字段的历史名称,如果在原始字段上有索引,但是聚合框架无法在重命名后的字段上使用索引。应该尽量在修改字段名称之前使用索引。
管道表达式
1、”$add”:[expr1[,expr2,expr3….exprN]]
接受同一个文档中一个或多个表达式作为参数,将这些表达式相加。
2、”$subtract”:[expr1,expr2]
接受两个表达式作为参数,用第一个表达式减去第二个表达式作为结果:
3、”$multiply”:[expr1[,expr2,expr3…..exprN]]
接受一个或多个表达式,并且将它们相乘。