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#驱动程序在构建查询时使用类型信息DBFeatureDBPointFeature

我想知道Index是否在类型Query之前应用,因此它将仅限于Index子集。

否则,它将首先获取特定类型的所有项(这是一个比理想集大得多的集(,索引几乎毫无意义。

在这种情况下,MongoDB的行为是什么?

非常感谢!!

MongoDB C#OfType()索引行为

如果只有parentFeatureSetId被索引,那么这将是MongoDB使用的索引。它将首先找到具有指定parentFeatureSetId的文档,然后扫描它们以查找具有正确类型的文档。

但是,也可以对类型鉴别器字段(_t(进行索引,这可能会提高性能。在这种情况下,mongo将与两个索引相交,并只扫描具有两个正确类型和parentFeatureSetId 的项的子集


重要提示:C#驱动程序在构建查询时不会使用DBFeature,它只会使用DBPointFeature,您注意到文档必须特别使用它。通用AsQueryable只是为了方便使用。