$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:数组内单个元素匹配则符合.:数组内多个元素能分别匹配上条件即符合