MongoDB $ geoNear操作"附近"现场使用

时间:2017-02-22 12:57:35

标签: mongodb geolocation geospatial

我有一个"机器"与文件


    {
        "_id" : "ac9d1db9-6a0d-47c6-97d3-a613c8dd0031",
        "pin" : {
            "machine":"test1",
            "position" : [ 
                -1.5716, 
                54.7732
            ]
        }
    }

Note: -1.5716 is lng and 54.7732 is lat

我在文档

上创建了一个2dsphere索引

    db.machine.createIndex( { 'pin.position' : "2dsphere" } )

我尝试使用2个不同版本的查询(查询中只有差异是geoNear管道阶段的近场

查询1:


    db.machine.aggregate(
      [
       {
           "$geoNear":{
               "near": [-0.2129092,51.5031594],
               "limit":100,
               "maxDistance":500*1000,
               "distanceField": "dist.calculated",
               "includeLocs": "dist.location",
               "distanceMultiplier":1/1000,
               "spherical": true
        }

       }
      ]
    )

Note: -0.2129092 is lng and 51.5031594 is lat

查询2


    db.machine.aggregate(
      [
       {
           "$geoNear":{
               "near": { type: "Point", coordinates: [-0.2129092,51.5031594] },
               "limit":100,
               "maxDistance":500*1000,
               "distanceField": "dist.calculated",
               "includeLocs": "dist.location",
               "distanceMultiplier":1/1000,
               "spherical": true
        }

       }
      ]
    )

Note: -0.2129092 is lng and 51.5031594 is lat

查询1将文档返回给我,并提供此文档为5.88161133560063e-05 Kms远离搜索坐标

查询2将文档返回给我,并提供此文档距搜索坐标375.135052595944 Kms

我在网站http://andrew.hedges.name/experiments/haversine/上交叉验证这些lng / lat之间的距离,并看到文档与搜索坐标之间的距离约为374.835 Kms

似乎查询2提供了正确的结果,但我不确定查询1和查询2之间的区别是什么以及我是否正确使用它。

请告知

1 个答案:

答案 0 :(得分:0)

查询1提供传统坐标对中的距离,查询2提供以米为单位的距离(GeoJSON),因此两个查询都使用不同的单位

请检查以下链接https://jira.mongodb.org/browse/SERVER-16652?jql=text%20~%20%22geoNear%22