在MongoDB中进行地理空间查询时,如何返回与目标点的距离?

1 投票
1 回答
1109 浏览
提问于 2025-04-16 06:18
for post in db.datasets.find({"loc":{"$near":[50,50]}}).limit(10):

我该如何计算文档和“50,50”这个点之间的距离呢?

1 个回答

1

使用“geoNear”命令会返回一个“dis”值,这个值是结果的一部分。将这个值乘以你选择的单位下的地球半径,就能算出这个结果和你最初位置之间的距离。

举个例子,假设“places”是你的数据集合的名字,而你最初的位置的经纬度是50, 50。

db.command( { geoNear : "places" , near : [50,50] } );

结果会以这样的格式返回:

[
    {
        "dis" : 0.3886630122897946,
        "obj" : {
            "_id" : ObjectId("4d9123026ccc7e2cf22925c4"),
            "pos" : {
                "lon" : -10,
                "lat" : -20
            }
        }
    }
]

将每个结果的“dis”值乘以6371,就能得到以公里为单位的距离,而乘以3959则能得到以英里为单位的距离。

更多的细节和例子可以在Mongo文档中找到。

撰写回答