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