开发者

Geospatial Index for inner structure

开发者 https://www.devze.com 2023-04-12 04:50 出处:网络
I have a collections names locations with data structures like: { \"_id\" : ObjectId(\"4e95263f1783ae8487be26d4\"),

I have a collections names locations with data structures like:

{ 
  "_id" : ObjectId("4e95263f1783ae8487be26d4"),
  "name" : "test 1", 
  "location" : { 
     "coordinate" : { 
        "latitude" : 40.731987, 
        "longitude" : -73.999701
     },
     "address": "xxxx开发者_开发问答xxx"
  }
}

and want to make geo queries against location.coordinate field.

When I'm trying to add index I get following results:

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

Is it possible to use geospatial index for such structure?


Since mongodb is based on GeoJSON format, its better to have the longitude element first

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

In the mongodb geospatial page, you can see that in multiple places

By default, the index assumes you are indexing longitude/latitude and is thus configured for a [-180..180) value range.

and

The code assumes that you are using decimal degrees in (longitude, latitude) order. This is the same order used for the GeoJSON spec. Using (latitude, longitude) will result in very incorrect results, but is often the ordering used elsewhere, so it is good to double-check. The names you assign to a location object (if using an object and not an array) are completely ignored, only the ordering is detected.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号