[英]MongoDB C# OfType() Indexing behavior
假设我对一个集合有此查询:
var dbMarkers = Features.AsQueryable<DBFeature>()
.OfType<DBPointFeature>()
.Where(f => f.parentFeatureSetId = parentFeatureSetId );
并且通过以下方式对特征进行索引(稀疏):
{ "parentFeatureSetId": 1 }
据我了解,在构建查询时,C#驱动程序将类型信息DBFeature和DBPointFeature用作附加过滤器。
我想知道是否在类型Query之前应用索引,因此它将仅限于索引子集。
如果不是这样,它将首先获取特定类型的所有项目(该集合的大小比对象集大得多),索引将几乎毫无意义。
在这种情况下,MongoDB的行为是什么?
非常感谢你!!
如果仅对parentFeatureSetId
进行索引,则它将成为MongoDB
使用的索引。 它将首先查找具有指定的parentFeatureSetId
的文档,然后扫描它们以查找具有正确类型的文档。
但是,您也可以为类型鉴别_t
字段( _t
)建立索引,这可以提高性能。 在这种情况下蒙戈将交叉索引和仅扫描具有正确的类型和这两个项目的子集parentFeatureSetId
重要说明: C#驱动程序在构建查询时将不会使用DBFeature
而只会使用您已注意到文档必须特别注明的DBPointFeature
。 通用的AsQueryable
仅用于简化用法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.