现场vs单一化合物?

我收集了一些地理空间+时间数据以及一些额外的属性,我将在地图上显示这些属性。 这个集合目前有几百万个文档,并且会随着时间的推移而增长。

每个文档都有以下字段:

  • 位置:[geojson对象]
  • 日期:[日期对象]
  • ZoomLevel:[int32]
  • EntryType:[ObjectID]
  • 我需要能够通过位置(通常是geowithin查询),Date(通常是$ gte / $ lt),ZoomLevel和EntryType的任意组合快速查询此集合。

    我想知道的是:我应该制作一个包含所有四个字段,或每个字段的单个索引或其组合的复合索引吗? 我在MongoDB文档中阅读了以下内容:

    对于包含2dsphere索引键和其他类型键的复合索引,只有2dsphere索引字段确定索引是否引用文档。

    ......听起来这意味着将2dsphere的位置索引作为复合索引的一部分可能毫无意义?

    任何澄清这一点将不胜感激。


    对于你的用例,你将需要使用多个索引。

    如果您创建了一个覆盖文档所有字段的索引,则只有在索引中包含第一个字段时,查询才能使用它。

    由于您需要通过这四个字段的任意组合来查询,我建议您分析您的数据访问模式,并确切了解您实际使用的过滤器,并为每个或每组创建特定索引。

    编辑:对于你的问题关于2dsphere,它确实有意义,使他们复合。

    本说明涉及'稀疏'选项。 稀疏索引仅引用包含索引字段的文档,对于2dspheres,只有不包含geojson / point数组的文档才会被忽略。

    链接地址: http://www.djcxy.com/p/57915.html

    上一篇: field vs single compound?

    下一篇: Build index which will cover queries