Budete muset použít $geoNear a pouze pokud používáte verzi 2.4 a novější
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Upravit:po úpravě otázky
Níže uvedený dotaz vám poskytne polohu a vzdálenost, ale nenačte interní (prvek pole) _id
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Všimněte si přidání includeLocs
a odstranění uniqueDocs: true
Chcete-li také získat interní _id, budete se muset (podle tohoto příkladu) uvolnit a podmíněně promítnout nebo tak, ale nemyslím si, že by to stálo za to, pokud místo _id nepotřebujete adresu