Bạn sẽ phải sử dụng $ geoNear và chỉ khi bạn đang sử dụng phiên bản V2.4 trở đi
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
query : {"_id" : "id1"},
uniqueDocs: true,
maxDistance : 2000
}})
Chỉnh sửa:sau khi chỉnh sửa câu hỏi
Truy vấn dưới đây sẽ cung cấp cho bạn vị trí và khoảng cách, nhưng không truy xuất nội bộ (phần tử mảng) _id
db.users.aggregate(
{$geoNear : {
near: [-1, -2],
distanceField: "distance",
includeLocs: "location",
query : {"_id" : "id1"},
maxDistance : 2000
}},
{$project : {"location" : 1, "_id" : 0, "distance" : 1}}
)
Lưu ý việc bổ sung includeLocs
và loại bỏ uniqueDocs: true
Để truy xuất _id nội bộ, bạn sẽ phải (theo ví dụ này) thư giãn và chiếu có điều kiện, nhưng tôi nghĩ điều đó không đáng, trừ khi bạn cần địa chỉ thay vì _id