Du måste använda $geoNear , och endast om du använder V2.4 och framåt
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Redigera:efter redigering till fråga
Frågan nedan ger dig plats och avstånd, men hämtar inte det interna (arrayelementet) _id
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Observera tillägget av includeLocs
och eliminering av uniqueDocs: true
För att även hämta det interna _id måste du (enligt detta exempel) koppla av och villkorligt projicera eller så, men jag tycker inte att det är värt det, om du inte behöver adressen istället för _id