也可以看看
$elemMatch
¶所述$elemMatch
操作者的限制的内容
<array>
从查询结果字段只包含第一
匹配元件$elemMatch
的条件。
无论是$
操作者和$elemMatch
操作者投射第一从基于条件的阵列匹配元件。
该$
操作项目根据从查询语句中的一些条件集合中的每个文件的第一个匹配的数组元素。
该$elemMatch
投影算需要一个明确的条件的说法。这使您可以基于查询中没有的条件进行投影,或者如果您需要基于阵列的嵌入式文档中的多个字段进行投影。有关示例,请参见数组字段限制。
db.collection.find()
在操作的观点不支持$elemMatch
投影操作。
$text
查询表达式
$elemMatch
。$elemMatch
投影运算符上的示例假定schools
包含以下文档的集合:
以下find()
操作查询该zipcode
字段的值为的所有文档63109
。在$elemMatch
投影仅返回第一所述的匹配元件students
,其中阵列school
字段具有值102
:
该操作返回以下文档,这些文档zipcode
等于63109
并students
使用投影该数组
$elemMatch
:
_id
等于的文档1
,students
数组包含school
字段等于的多个元素102
。但是,$elemMatch
投影仅返回数组中的第一个匹配元素。_id
等于的文档在结果3
中不包含该
students
字段,因为其students
数组中没有元素
与$elemMatch
条件匹配。$elemMatch
有多个字段¶该$elemMatch
投影可以指定多个字段的标准:
以下find()
操作查询该zipcode
字段的值为的所有文档63109
。投影包含数组的第一个
匹配元素,students
其中该school
字段的值为,102
并且该age
字段大于10
:
该操作返回的三个文档zipcode
等于63109
:
_id
等于的文档3
不包含该students
字段,因为没有数组元素符合$elemMatch
条件。
也可以看看