当传递嵌套数组(例如)的数组时,
匹配文档,其中该字段包含嵌套数组作为元素(例如),或者该字段等于嵌套数组(例如)。[ [ "A" ] ]
$all
field: [ [ "A" ], ... ]
field: [ "A" ]
例如,考虑以下查询[1]:
该查询等效于:
等效于:
因此,$all
表达式匹配文档,其中
tags
字段是包含嵌套数组的数组或等于嵌套数组的数组:[ "ssl",
"security" ]
[1] | 在$all 用表达单个元件是用于说明性的目的,因为$all 如果匹配仅单个元件的表达是不必要的。相反,当匹配单个元素时,“包含”表达式(即
)更合适。arrayField: element |
以下示例使用inventory
包含文档的集合:
$all
以匹配值¶以下操作使用$all
操作者查询
inventory
的文档集合,其中的值tags
字段是数组,其元素包括appliance
,school
,和
book
:
上面的查询返回以下文档:
$all
与¶一起使用$elemMatch
如果该字段包含文件的数组,你可以使用
$all
与$elemMatch
操作。
以下操作在inventory
集合中查询文档,其中qty
字段的值是一个数组,其元素与$elemMatch
条件匹配:
该查询返回以下文档:
$all
存在该运算符以支持对数组的查询。但是您可以使用$all
运算符来针对非数组进行选择
field
,如以下示例所示:
但是,请使用以下形式表示相同的查询:
这两个查询都将选择inventory
集合中num
字段值等于的所有文档50
。
注意
在大多数情况下,MongoDB不会将数组视为集合。该运算符对此方法提供了明显的例外。