MongoDB过滤查询的方法及实例

1,402 阅读2分钟

MongoDB过滤器聚合是在3.2版本中引入的。它被用来选择一个数组的子集,并根据标准提供结果。过滤器操作符返回一个符合所提供标准的条目数组,其顺序是找到的。在MongoDB中使用过滤器操作符时,我们必须提供输入、as和cond作为参数。输入和条件是必须的参数,但是 "as "是可选的。当我们在MongoDB中使用过滤器操作符时,我们必须在过滤器关键字前使用$符号。

在Ubuntu 20.04中过滤查询MongoDB的语法?

filter操作符提供了一个数组,其中只有那些符合条件的原始顺序的元素。下面提到的是filter操作符提供了一个数组,其中只有那些符合条件的原始顺序的元素。下面提到的是filter的语法。

{ $filter:{input:<array\_field> , as:<string> , cond:<expression>} }
  • 过滤器。$filter操作符用于提供一个符合某些标准的结果。在MongoDB中,我们使用filter操作符来根据我们在查询中指定的标准过滤结果。
  • 输入。这是一个数组解析表达式。我们设法将数组字段作为一个输入参数来过滤记录。在我们在过滤运算符中使用输入字段参数之前,我们必须使用$符号。
  • 作为。这是一个过滤运算符的参数,是可选的。这是作为输入数组中的一个元素而被利用的字段名称。这个参数在过滤运算符中是字符串类型的。使用 "as "关键字,这个表达式可以访问输入数组中的每个元素。
  • cond:这个选项决定了生成的数组中的值应该被包含在哪里。这个参数是过滤器操作符中的表达式类型。使用表达式对来自给定集合的值进行过滤。我们可以使用许多条件运算符来过滤数组元素的数据。

过滤查询如何在Ubuntu 20.04的MongoDB中工作。

MongoDB的$filter操作符是用来根据我们在查询中定义的条件从数组中过滤文档。基于给定的条件,返回一个数组的子集。只有那些满足要求的数组条目被返回。这些元素被重新组合,排列方式与之前相同。

让我们看看一些实例,以帮助你理解我们正在讨论的内容。当我们在文章中进行时,我们希望你能在mongo shell中尝试这些例子。 我们首先创建一个数据库集合,在整个文章中都会用到。

在这里,我们使用MongoDB shell定义了一个数据库集合为 "候选人"。对于这个集合,我们定义了id、name和marks字段。我们通过使用insertMany查询,同时插入了七个文档。

集合 "candidents "正在调用上述查询中的查找功能。然后,记录的文件显示字段和它的相应值。注意,在字段 "mark "中,数组被定义了一些随机值。

例1:在Ubuntu 20.04的MongoDB中使用$filter操作符。

在下面的例子中,$filter操作符被用来从给定的集合中过滤字段 "mark "中的数组成员。

我们在 "候选人 "的集合上使用了聚合查询。在这个查询中,我们有一个match操作符,用来通过id过滤文件。我们给id字段分配了一个match操作符,用来通过id过滤文件。我们给id字段分配了一个in操作符。这个in操作符可以找到id值等于所提供的数组中任何一个值的文档。然后,in操作符可以找到id值等于所提供的数组中任何一个值的文档。然后,filter操作符被传递给输入参数并设置其值"marks"。还使用了"as"参数,返回字段名"marks"。然后,我们指定了cond参数,在字段"marks"。还使用了 "as "参数,返回字段名 "marks"。然后,我们指定了cond参数,在字段"marks "上使用大于运算符。

通过上述查询,我们得到的结果如图所示,新字段名为highmarks。

例2:在Ubuntu 20.04的MongoDB中对一个空数组使用$filter操作符。

当我们的一个集合文件有一个空数组时,过滤操作符返回一个空数组,如图所示。

match中,我们指定了具有match中,我们指定了具有in操作符的id,它从集合中返回id "7",因为我们在数组中给出了 "7"。然后,$filter查询提供了集合字段 "marks",它返回一个空数组,因为id "7 "的 "marks "字段内没有存储任何值。

过滤器操作的结果是一个空的文档集。

例3:在Ubuntu 20.04的MongoDB中对错误的类型使用$filter操作符。

如果我们试图对一个没有数组的字段使用$filter,我们会得到一个错误。下面是这个语句的演示。

我们在filter操作中给出了一个ID"5"的文档字段"name"。在filter操作中给出了一个ID为 "5 "的文档字段 "name"。在filter的参数条件中,我们有一个eq操作符,它接收字段"eq操作符,它接收字段"name "并与定义的字符串值匹配。

当我们运行上述查询时,错误信息显示,如图所示,$filter操作符中的类型必须是一个数组。

例4:在Ubuntu 20.04的MongoDB中使用filter操作符和filter操作符和this变量。

在前面的例子中,我们使用了 "as "参数来给变量起名。as参数是可选的。如果我们把这个字段设置为空白,那么变量的名字就会默认为 "this"。

在这里,我们在in操作符中指定了数组,它从in操作符中指定了数组,它从match中的给定集合的文档中选择id字段。然后,filter有两个参数,输入和条件。cond参数有一个大于运算符,可以检索出大于65的标记。我们没有把它们作为一个参数,而是利用了filter有两个参数,输入和条件。cond参数有一个大于运算符,可以检索出大于65的标记。我们没有把它们作为一个参数,而是利用了this字段名。

因此,通过使用$$this来引用字段,我们得到了与 "as "相同的结果。输出结果满足match条件和match条件和filter条件,如图所示。

结论

这是一个MongoDB过滤器指南。在这篇文章中,我们已经了解了MongoDB中过滤器的定义、语法以及如何发挥作用。还提供了例子和代码实现。数组字段的元素是使用MongoDB的过滤器操作符来过滤的。为了从数组元素中检索数据,我们利用了几个条件,如gtgt、lt、gtegte和lte。