我有一个地理空间+时间数据的集合,其中包含一些附加属性,我将在地图上显示它们。目前,该集合已包含数百万份文档,并且会随着时间的推移而不断增长。
每个文档都有以下字段:
- 位置:[geojson 对象]
- 日期:[日期对象]
- 缩放级别:[int32]
- 条目类型:[对象 ID]
我需要能够通过位置(通常是 geowithin 查询)、日期(通常是 $gte/$lt)、ZoomLevel 和 EntryType 的任意组合快速查询该集合。
我想知道的是:我应该创建一个包含所有四个字段的复合索引,还是每个字段一个索引,或者它们的某种组合?我在 MongoDB 文档中读到以下内容:
对于包含 2dsphere 索引键以及
其他类型的key,只有2dsphere索引字段决定是否
索引引用文档。
...这听起来意味着将 Location 的 2dsphere 索引作为复合索引的一部分可能毫无意义?
如果对此有任何澄清,我们将不胜感激。
对于您的用例,您将需要使用多个索引。
如果您创建一个涵盖文档所有字段的索引,您的查询将仅在包含索引中的第一个字段时才能使用它。
由于您需要通过这四个字段的任意组合进行查询,因此我建议您分析数据访问模式并准确查看您实际使用的过滤器,并为每个字段或每个字段创建特定的索引。
编辑:对于你关于 2dsphere 的问题,让它们复合确实有意义。
本注释指的是“稀疏”选项。稀疏索引仅引用包含索引字段的文档,对于 2dspheres,唯一被忽略的文档是不包含 geojson/point 数组的文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)