You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB部分索引是否适配exists子句及相关查询能否命中该索引

MongoDB部分索引命中情况分析

你创建的部分索引过滤条件如下:

{
    "$and" : [
        {
            "field1" : {
                "$exists" : true
            }
        },
        {
            "field2" : {
                "$exists" : true
            }
        }
    ]
}

查询1:{ $and : [{ "field1" : { "$ne" : null } }, { "field2" : { "$ne" : null } }] }

  • 无法命中该部分索引
  • 原因:$ne: null的匹配范围比$exists: true更广——它会匹配字段不存在的文档,以及字段存在但值不为null的文档。而你的部分索引仅包含field1和field2都存在的文档,这个查询的结果集里还包含不在索引范围内的字段不存在的文档。MongoDB无法仅通过该索引获取所有匹配结果,因此不会选择这个索引。

查询2:{$and : [{"field1" : {"$exists" : true}}, {"field2" : {"$exists" : true}}]}

  • 可以命中该部分索引
  • 原因:这个查询的条件和部分索引的过滤条件完全一致,所有匹配的文档都被包含在该部分索引中。MongoDB可以直接通过索引快速定位目标文档,因此会使用该部分索引。

内容的提问来源于stack exchange,提问作者Mayur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:19:52