Ще трябва да използвате $geoNear и само ако използвате V2.4 нагоре
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Редактиране:след редакция на въпрос
Заявката по-долу ще ви даде местоположение и разстояние, но не извлича вътрешния (елемент от масив) _id
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Обърнете внимание на добавянето на includeLocs
и премахване на uniqueDocs: true
За да извлечете също и вътрешния _id, ще трябва (следвайки този пример) да развиете и условно да проектирате или така, но не мисля, че си струва, освен ако не ви трябва адресът вместо _id