是否有可能返回0个结果的查询(如果不存在索引,则可能将至少有1个结果),因为要查询的字段的部分索引不包含限定条件文件?
导致此问题的方案是使用局部索引,该局部索引使用exists
过滤器在字段上强制唯一性,这样它将忽略该字段为null
的文档。
如果存在某种方式,那么对该集合中对该字段的null
值的任何查询仍将使用该部分索引,并且不返回任何结果,这将是理想的-避免了实际上确实发生的完整集合扫描情况下导致查询非常慢。
答案 0 :(得分:0)
我看到的唯一解决方案是为所有查询添加yourField: { $exists: true }
条件,这些查询尚未针对该字段进行过滤。 (其他需要的字段也满足索引要求。)