$elemMatch
是用来匹配数组内的元素的。
与 .
容易产生混淆。
$elemMatch
与 .
对比
初始化源数据
1 | db.em.insert({"arr":[{"e1":"a","e2":11},{"e1":"b","e2":12},{"e1":"c","e2":13},{"e1":"d","e2":14}]}) |
用 .
查询
db.em.find({"arr":{$elemMatch: {"e1":"a","e2":32}}})
无结果集
用 $elemMatch
查询
db.em.find({"arr.e1":"a","arr.e2":32})
查询结果如下:
总结
$elemMatch
:数组内单个元素匹配则符合.
:数组内多个元素能分别匹配上条件即符合