须要,查问一个坐标点的左近地位

数据格式

能够用数组或者geojson的模式

<field>: [ <x>, <y> ]<field>: [<longitude>, <latitude> ]

GeoJSON

location: {      type: "Point",      coordinates: [-73.856077, 40.848447]}

先列出经度,而后再列出纬度

比方 loc 字段

  {    "city": "北京市",    "geo_id": 565932,    "geo_name": "万柳园(长春堂药店)",    "lat": 39.850201868495773283,    "lng": 116.33426020654366084,    "loc": "[116.33426020654366084,39.850201868495773283]",    "status": 0 }

索引

创立 2dsphere 索引

2dsphere索引反对查问球面几何实体对象

db.collection.createIndex( { <location field> : "2dsphere" } )

pymongo查问例子

        lng = geo['lng']        lat = geo['lat']        result = geos_collection.aggregate([            {"$geoNear": {                 "near": {                     "type": "Point",                    "coordinates": [lng, lat] },                     "distanceField": "distance",                     "maxDistance": 2000,                     "query": {"status": -1},                     "spherical": True }            },            {"$limit": 10}        ])

mongodb shell

db.o2o_geos.aggregate([   {     $geoNear: {        near: { type: "Point", coordinates: [120.13606048541625171, 30.29447292933346958 ] },        distanceField: "distance",        maxDistance: 2000,        query: { status: -1 },        spherical: true     }   }])
  • coordinates 查问的坐标点
  • maxDistance 最大间隔
  • query 过滤条件

links

  • https://docs.mongodb.com/manu...
  • https://docs.mongodb.com/manu...
  • https://docs.mongodb.com/manu...