Będziesz musiał użyć $geoNear , i tylko jeśli używasz wersji 2.4 i nowszej
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Edytuj:po edycji do pytania
Poniższe zapytanie poda lokalizację i odległość, ale nie pobierze wewnętrznego (elementu tablicy) _id
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Zwróć uwagę na dodanie includeLocs
i eliminacja uniqueDocs: true
Aby pobrać również wewnętrzny _id, będziesz musiał (zgodnie z tym przykładem) rozwinąć i warunkowo projektować, ale nie sądzę, że warto, chyba że potrzebujesz adresu zamiast _id