Когда я выполняю геопространственные запросы в MongoDB, как мне также вернуть расстояние от желаемой точки? - PullRequest
1 голос
/ 30 октября 2010
for post in db.datasets.find({"loc":{"$near":[50,50]}}).limit(10):

Как узнать расстояние между документом и "50,50"?

1 Ответ

1 голос
/ 10 января 2012

Использование команды "geoNear" вернет значение "dis" как часть результатов.Умножив это значение на радиус Земли в выбранной вами единице, вы получите расстояние между этим результатом и вашим исходным местоположением.

Например, где «места» - это название коллекции, а широта / долгота для вашей исходной точки - 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 .

...