如何在MongoDB中使用$all操作符

539 阅读2分钟

MongoDB是一个NoSQL数据库,它提供了对操作符类的广泛支持,以帮助检索数据。all操作符属于数组操作符类。正如**all**操作符属于数组操作符类。正如all(MongoDB中的所有运算符)的名字所示,它被用来从数据库集合中获取文件,如果它与数组字段中的所有值相匹配。此外,如果任何字段中存在嵌套数组,$all运算符也提供了匹配嵌套数组的支持。

在这篇文章中,我们将简要介绍$all操作符在MongoDB中的用法。

$all操作符如何在MongoDB中工作

如上所述,在$all操作符的帮助下,人们可以基于数组字段来获取文档。

为了更好地理解,让我们看一下$all操作符的语法。

{"field": {$all: ["value1", "value2"...]}}

这个操作符搜索指定的值,任何有确切值的字段的文件都会被检索到。然而,我们注意到,只有当所有的值都与文档中的数组字段的值相匹配时,**all才会发挥作用。all**才会发挥作用。all的工作机制与andMongoDB中的逻辑运算符)有关;两个运算符都是寻找完全匹配的。但是**and**(MongoDB中的逻辑运算符)有关;两个运算符都是寻找完全匹配的。但是and操作符可以用于多种数据类型,而$all只针对数组数据类型字段。

$all操作符在MongoDB中如何工作

在本指南中,将使用以下MongoDB实例。

  • MongoDB数据库:本指南中使用的MongoDB数据库被命名为 "linuxhint"
  • 集合:我们将 "项目"集合与 "linuxhint"数据库相关联。

以下文件驻留在 "projects"集合中。

> db.projects.find().pretty()

例1:$all操作符的基本用法

这个例子演示了**$all**操作符的基本用法;例如,下面提到的命令将在 "经理"字段中寻找完全匹配的数组值;只显示那些经理名字为 "Mike"和 "Sam"的文档。

> db.projects.find({managers: {$all: ["Mike", "Sam"]}}).pretty()

例2:在嵌套数组中使用$all操作符

如果文档包含嵌套数组,比如在我们的案例中,"硬件"项目包含一个经理人的嵌套数组,我们可以通过在$all操作符中指定嵌套数组来获取文档。下面提到的命令将获取有经理 "Alen"、"Sam"和 "Elon"的文档。

> db.projects.find({managers: {$all: [["Alen", "Sam"], "Elon"]}}).pretty()

人们注意到,如果你想只使用数组的嵌套部分;你也可以这样做,下面的命令将在这方面帮助你。

> db.projects.find({managers: {$all: [["Alen", "Sam"]]}}).pretty()

例3:使用$all操作符来匹配一个值

除了处理数组之外,$all运算符的使用还可以扩展到匹配文档中的值。在我们的例子中,下面提到的命令将得到那些 "cost"值等于 "5000"的文档。

> db.projects.find({cost: {$all: [5000]}}).pretty()

或者可以说,下面写的命令也会为你提供同样的结果。

> db.projects.find({cost: 5000}).pretty()

> db.mycollection.find().pretty()

结论

MongoDB提供了一个广泛的操作符列表,用于从任何Mongo数据库的集合中检索所需的文件。在这篇文章中,我们在MongoDB上下文中简要讨论了一个名为all的数组关联操作符。这个操作符可以用来匹配一个字段中的数组值,并获取该相关文档。除了数组值,all的数组关联操作符。这个操作符可以用来匹配一个字段中的数组值,并获取该相关文档。除了数组值,all还提供了支持,通过匹配任何值(除数组外)来获取文档。