MongoDB中$ project,$ filter和$ match之间的差异

时间:2018-05-30 13:02:55

标签: mongodb nosql operators aggregation-framework

我是MongoDB和NoSQL服务器的新手。我在我的计算机上使用Studio 3T软件(MongoDB的IDE)测试了一些东西(插入本地数据库,简单查询等等),我在测试聚合方法的同时进入了这3个操作符:$ project,$ filter和$匹配。问题是我没有得到这些运营商之间的差异,我认为我唯一可以理解的是,$ project用于"选择"哪个字段(或整个数组)在查询的响应中显示在屏幕上,但是$ match和$ filter呢?他们似乎做同样的事情。我阅读了MongoDB文档,但它没有详细解释操作符(当然我认为)。

提前致谢

1 个答案:

答案 0 :(得分:2)

$project$matchAggregation Pipeline Stages$filterAggregation Pipeline Operator

Pipeline阶段和Pipeline运算符之间的差异是可以单独使用的阶段,而Pipeline运算符只能在Pipeline阶段内使用。

$project用于将元素投射到下一阶段

$match用于过滤集合,仅为输入查询/条件提供匹配的文档,建议在使用其他运算符之前在Aggregation Pipeline的开头使用它。由于它将集合过滤到数量减少的文档,并且只有减少的文档集被传递到聚合管道的下一阶段。

$filter用于数组,它根据指定的条件选择要返回的数组的子集。返回仅包含与条件匹配的元素的数组。返回的元素按原始顺序排列。