当传递嵌套数组(例如)的数组时,
匹配文档,其中该字段包含嵌套数组作为元素(例如),或者该字段等于嵌套数组(例如)。[ [ "A" ] ]$allfield: [ [ "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不会将数组视为集合。该运算符对此方法提供了明显的例外。