我应该使用哪个索引进行$ geoWithin搜索?

时间:2015-03-22 16:47:14

标签: mongodb indexing mongoose mongodb-query geospatial

我按照以下标准查询文件位置

db.collection.find({
    "location": {
        "$geoWithin": {
            "$box": [
                [165.8694369, -52.61941849999999],
                [-175.831536, -29.2313419]
            ]
        }
    }
});

我应该使用哪种索引类型作为位置字段2d2dsphere

1 个答案:

答案 0 :(得分:1)

引用documentation

  

查询使用平面(平面)几何计算距离。

     

版本2.2.3中更改:应用程序可以使用$ box而不使用地理空间索引。但是,地理空间索引支持比未索引的等价物快得多的查询。在2.2.3之前,在使用任何地理空间查询运算符之前,必须在包含坐标的字段上存在地理空间索引。

     

只有2d地理空间索引支持$ box。


  

球面

     

要在类似地球的球体上计算几何体,请将您的位置数据存储在球面上并使用2dphere索引。

     

使用此坐标轴顺序将您的位置数据存储为GeoJSON对象:经度,纬度。 GeoJSON的坐标参考系统使用WGS84数据。


  

     

要计算欧几里德平面上的距离,请将您的位置数据存储为旧坐标对,并使用2d索引。