内部结构的地理空间索引

时间:2011-10-12 06:01:50

标签: mongodb indexing geospatial

我有一个集合名称locations,其数据结构如下:

{ 
  "_id" : ObjectId("4e95263f1783ae8487be26d4"),
  "name" : "test 1", 
  "location" : { 
     "coordinate" : { 
        "latitude" : 40.731987, 
        "longitude" : -73.999701
     },
     "address": "xxxxxxx"
  }
}

并希望针对location.coordinate字段进行地理位置查询。

当我尝试添加索引时,我得到以下结果:

$> db.locations.ensureIndex( { "location.coordinate" : "2d" } )
$> **** SyntaxError: syntax error (shell):0

是否可以将地理空间索引用于此类结构?

1 个答案:

答案 0 :(得分:4)

由于mongodb基于GeoJSON格式,因此最好先使用经度元素

"location" : { 
     "coordinate" : {        
        "longitude" : -73.999701,
        "latitude" : 40.731987 
     },

mongodb geospatial page中,您可以在多个地方看到

  

默认情况下,索引假设您正在索引经度/纬度和   因此配置为[-180..180]值范围。

  

代码假定您使用的是十进制度数(经度,   纬度)订单。这与GeoJSON规范使用的顺序相同。   使用(纬度,经度)会导致非常不正确的结果,但是   通常是其他地方使用的排序,所以仔细检查是好的。   分配给位置对象的名称(如果使用对象而不是   数组)被完全忽略,只检测到排序。