在 MongoDB 中,aggregate 的 match 用于过滤文档,仅将符合指定条件的文档传递到下一个管道阶段。 $match
接受一个指定查询条件的文档。查询语法与读操作查询语法相同。
db_name.collection_name.aggregate([ { $match: { <query> } } ])
名称 | 描述 |
---|---|
db_name | 数据库名 |
collection_name | 表名 |
query | 查询条件 |
查询符合 query 的所有文档。
match 用于对文档进行筛选,之后可以在得到的文档子集上做聚合,match 可以使用除了地理空间之外的所有常规查询操作符,在实际应用中尽可能将 $match 放在管道的前面位置。这样有两个好处:一是可以快速将不需要的文档过滤掉,以减少管道的工作量;二是如果再投射和分组之前执行 $match,查询可以使用索引。
$match
查询中使用 $
作为聚合管道的一部分。$match
阶段使用 $text
,$match
阶段必须是管道的第一阶段。我们首先,使用 mongo 命令,连接上数据库,具体命令如下:
mongo
如下图所示:
现在,我们使用 use 命令,切换到 haicoder 数据库,具体命令如下:
use haicoder
现在,我们使用 insert 插入四条记录,具体命令如下:
db.haicoder.insert([ {id:1, "url" : "haicoder.net/c", "score" : 100 }, {id:1, "url" : "haicoder.net/cpp", "score" : 90 }, {id:2, "url" : "haicoder.net/golang", "score" : 80 }, {id:2, "url" : "haicoder.net/java", "score" : 60 } ]);
执行完毕后,此时,如下图所示:
我们看到,此时提示我们成功插入了多条记录,现在,我们使用 aggregate match,查询符合要求的文档,具体命令如下:
db.haicoder.aggregate([ { '$match': {id:{$gt:1}} } ]);
执行完毕后,此时,如下图所示:
现在,我们再次查询,具体命令如下:
db.haicoder.aggregate([ { '$match': {'id': {$gt:1}, 'score':{$gt:70}} } ]);
执行完毕后,此时,如下图所示:
我们看到,此时我们求出了 id 大于 1 的记录的记录。
在 MongoDB 中,aggregate 的 match 用于过滤文档,仅将符合指定条件的文档传递到下一个管道阶段。 $match
接受一个指定查询条件的文档。查询语法与读操作查询语法相同。