2D 索引
2D 索引支持对以二维平面上的点形式存储的数据进行查询。二维平面上的二维索引旨在用于查询旧版坐标对。
要创建一个 2D 索引,指定字符串2d 作为索引类型
db.<collection>.createIndex( { <location field> : "2d" } )
您不能使用 2D 索引对 GeoJSON 对象进行查询。要启用对 GeoJSON 对象的查询,请使用 2dsphere 索引。
注意
在创建2D 索引时,第一个值(经度)必须在 -180 和 180 之间,包括这两个值。第二个值(纬度)必须在 -90 和 90 之间,包括这两个值。但是,可以通过 2D 索引上的 选项 覆盖这些默认限制。与 2dsphere 索引 坐标不同,2D 索引 值不会“绕球体”。
用例
使用 2D 索引对表示在二维平面内的数据进行查询和计算。例如
分析两件艺术品视觉相似性的应用程序。
能够对二维图表进行计算的计算器。
在二维地图上计算玩家之间距离的移动游戏。
开始使用
要了解如何创建和查询二维索引,请参阅
详细信息
支持的计算
二维索引支持在平面,欧几里得平面上的计算。
对于球面几何计算,将您的数据存储为GeoJSON对象,并使用2dsphere索引以支持地理空间查询。
复合2D索引
您可以创建复合2D索引,该索引引用两个字段
第一个字段必须是位置字段。索引构建的查询首先选择此字段。
第二个字段基于其他标准进一步过滤结果。
复合2D索引可以覆盖查询。
sparse 属性
2D索引始终是稀疏的,忽略稀疏选项。如果一个文档缺少2D索引字段(或该字段是null或空数组),MongoDB不会在该2D索引中为该文档添加条目。对于插入操作,MongoDB将插入文档但不添加到2D索引中。
对于包含2D索引键和其他类型键的复合索引,只有2D索引字段决定了索引是否引用文档。