Vous devrez utiliser $geoNear , et uniquement si vous utilisez la V2.4 et plus
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Modifier :après modification de la question
La requête ci-dessous vous donnera l'emplacement et la distance, mais ne récupère pas le _id interne (élément de tableau)
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Notez l'ajout de includeLocs
et élimination de uniqueDocs: true
Pour récupérer également le _id interne, vous devrez (en suivant cet exemple) vous dérouler et projeter conditionnellement, mais je ne pense pas que cela en vaille la peine, sauf si vous avez besoin de l'adresse au lieu du _id