MongoDB 中 $project、$filter 和 $match 之间的差异
Differences between $project, $filter and $match in MongoDB
我是 MongoDB 和 NoSQL 服务器的新手。我正在使用 Studio 3T 软件(IDE for MongoDB)在我的计算机上测试一些东西(插入本地数据库、简单查询等),我在测试聚合方法时遇到了这 3 个运算符:$project、$filter 和 $match。问题是我不明白这些运算符之间的区别,我想我唯一能理解的是 $project 用于 "choose" 在屏幕上显示哪些字段(或整个数组)以响应查询,但是 $match 和 $filter 呢?他们似乎在做同样的事情。我阅读了 MongoDB 文档,但它没有足够详细地解释运算符(当然在我看来)。
提前致谢
$project and $match are Aggregation Pipeline Stages and $filter is an Aggregation Pipeline Operator。
Pipeline stage 和 Pipeline operator 的区别在于 stage 可以单独使用,而 Pipeline operator 只能在 Pipeline stage 内部使用。
$project用于将元素投射到下一阶段
$match 用于过滤集合以仅给出输入 query/criteria 的匹配文档,建议在使用其他运算符之前在聚合管道开始时使用它。由于它将集合过滤为减少数量的文档,并且只有减少的文档集被传递到聚合管道的下一阶段。
$filter用在数组中,它根据指定的条件选择一个数组的子集到return。 Returns 仅包含符合条件的元素的数组。 returned 元素按原始顺序排列。
我是 MongoDB 和 NoSQL 服务器的新手。我正在使用 Studio 3T 软件(IDE for MongoDB)在我的计算机上测试一些东西(插入本地数据库、简单查询等),我在测试聚合方法时遇到了这 3 个运算符:$project、$filter 和 $match。问题是我不明白这些运算符之间的区别,我想我唯一能理解的是 $project 用于 "choose" 在屏幕上显示哪些字段(或整个数组)以响应查询,但是 $match 和 $filter 呢?他们似乎在做同样的事情。我阅读了 MongoDB 文档,但它没有足够详细地解释运算符(当然在我看来)。
提前致谢
$project and $match are Aggregation Pipeline Stages and $filter is an Aggregation Pipeline Operator。
Pipeline stage 和 Pipeline operator 的区别在于 stage 可以单独使用,而 Pipeline operator 只能在 Pipeline stage 内部使用。
$project用于将元素投射到下一阶段
$match 用于过滤集合以仅给出输入 query/criteria 的匹配文档,建议在使用其他运算符之前在聚合管道开始时使用它。由于它将集合过滤为减少数量的文档,并且只有减少的文档集被传递到聚合管道的下一阶段。
$filter用在数组中,它根据指定的条件选择一个数组的子集到return。 Returns 仅包含符合条件的元素的数组。 returned 元素按原始顺序排列。