Anda harus menggunakan $geoNear , dan hanya jika Anda menggunakan V2.4 dan seterusnya
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Edit :setelah mengedit pertanyaan
Kueri di bawah ini akan memberi Anda lokasi dan jarak, tetapi tidak mengambil internal (elemen array) _id
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Perhatikan penambahan includeLocs
dan penghapusan uniqueDocs: true
Untuk juga mengambil _id internal, Anda harus (mengikuti contoh ini) melepas dan memproyeksikan secara kondisional atau lebih, tetapi saya rasa itu tidak sepadan, kecuali Anda memerlukan alamat alih-alih _id