mongodb geoNear 使用记录

Posted lidashuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb geoNear 使用记录相关的知识,希望对你有一定的参考价值。

需要,查询一个坐标点的附近位置

数据格式

可以用数组或者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...

以上是关于mongodb geoNear 使用记录的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB $geoNear 聚合管道(使用查询选项和使用 $match 管道操作)给出不同的结果

GraphQL和MongoDB` $ geoNear`聚合

在 MongoDB 中使用 $geoNear 查找两点之间的距离时出错

Geonear 不工作 - mongodb?

MongoDB/Mongoose - 与 geoNear 和子文档的聚合

geoNear 在 MongoDB 中提取不准确的结果