目录
一、聚合管道之$match的概述
- 一、聚合管道之$match的概述
- 二、聚合管道之$count的概述
- 三、数据准备
- 四、聚合管道之$match操作示例
- 五、聚合管道之$count的示例
- $ match用于对文档进行筛选,之后可以在得到的文档子集上做聚合,$ match可以使用除了地理空间之外的所有常规查询操作符,在实际应用中尽可能将$ match放在管道的前面位置。这样有两个好处:一是可以快速将不需要的文档过滤掉,以减少管道的工作量;二是如果再投射和分组之前执行$match,查询可以使用索引。
- 筛选管道操作和其他管道操作配合时候时,尽量放到开始阶段,这样可以减少后续管道操作符要操作的文档数,提升效率。
- 计数并返回与查询匹配的结果数。
-
准备数据集,执行脚本
var tags = ["nosql","mongodb","document","developer","popular"]; var types = ["technology","sociality","travel","novel","literature"]; var books=[]; for(var i=0;i db.books1.find()
-
查询books1集合中type字段为technology的所有数据
db.books1.aggregate([{$match:{type:"technology"}}])
-
查询books1集合中的数据
> db.books1.find()
-
计数并返回与查询匹配的结果数
(1)、$ match阶段筛选出type匹配technology的文档,并传到下一阶段; (2)、$ count阶段返回聚合管道中剩余文档的计数,并将该值分配给type_count
db.books1.aggregate([ {$match:{type:"technology"}}, {$count: "type_count"} ])