MongoDB中投影阶段的$elemMatch是否会使用索引?
$elemMatch在投影阶段是否利用索引?
- 结论:投影阶段使用
$elemMatch时,不会利用目标字段的索引。 - 原因:MongoDB的索引核心作用是在查询过滤阶段快速筛选出符合条件的文档。而投影阶段是在文档已经被筛选出来之后,对返回的字段内容做裁剪或提取操作。
$elemMatch在投影中的作用是从数组字段里取出第一个匹配指定条件的元素,这个操作是在内存中对已获取的文档进行处理,不会触发索引查询。 - 补充说明:如果是在查询条件(而非投影)中使用
$elemMatch,当目标数组字段存在对应索引(比如数组索引、复合索引)时,MongoDB会利用索引来加速文档筛选。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

