U moet $geoNear gebruiken , en alleen als u V2.4 en hoger gebruikt
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Bewerken:na bewerking naar vraag
De balgquery geeft je locatie en afstand, maar haalt het interne (array-element) _id niet op
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Let op de toevoeging van includeLocs
en verwijdering van uniqueDocs: true
Om ook de interne _id op te halen, moet je (volgens dit voorbeeld) afwikkelen en voorwaardelijk projecteren of zo, maar ik denk niet dat het de moeite waard is, tenzij je het adres nodig hebt in plaats van de _id