MongoDB C#OfType()索引行为
本文关键字:索引 C#OfType MongoDB | 更新日期: 2023-09-27 18:08:29
假设我对集合进行以下查询:
var dbMarkers = Features.AsQueryable<DBFeature>()
.OfType<DBPointFeature>()
.Where(f => f.parentFeatureSetId = parentFeatureSetId );
特征索引(稀疏(通过:
{ "parentFeatureSetId": 1 }
据我所知,C#驱动程序在构建查询时使用类型信息DBFeature和DBPointFeature 我想知道Index是否在类型Query之前应用,因此它将仅限于Index子集。 否则,它将首先获取特定类型的所有项(这是一个比理想集大得多的集(,索引几乎毫无意义。 在这种情况下,MongoDB的行为是什么? 非常感谢!!
如果只有parentFeatureSetId
被索引,那么这将是MongoDB
使用的索引。它将首先找到具有指定parentFeatureSetId
的文档,然后扫描它们以查找具有正确类型的文档。
但是,也可以对类型鉴别器字段(_t
(进行索引,这可能会提高性能。在这种情况下,mongo将与两个索引相交,并只扫描具有两个正确类型和parentFeatureSetId
的项的子集
重要提示:C#驱动程序在构建查询时不会使用DBFeature
,它只会使用DBPointFeature
,您注意到文档必须特别使用它。通用AsQueryable
只是为了方便使用。