Sie müssen $geoNear verwenden , und nur wenn Sie V2.4 oder höher verwenden
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Bearbeiten:nach Bearbeitung der Frage
Die folgende Abfrage gibt Ihnen Standort und Entfernung, ruft jedoch nicht die interne (Array-Element) _id
abdb.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Beachten Sie die Hinzufügung von includeLocs
und Eliminierung von uniqueDocs: true
Um auch die interne _id abzurufen, müssen Sie (nach diesem Beispiel) abwickeln und bedingt projizieren oder so, aber ich denke nicht, dass es sich lohnt, es sei denn, Sie benötigen die Adresse anstelle der _id