也可以看看
$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条件。
也可以看看