Nếu bạn đang sử dụng $near
thì trước tiên bạn phải sắp xếp theo khoảng cách hoặc khái niệm "gần" không thực sự có ý nghĩa. Trên một địa cầu, mọi thứ đều có thể ở "gần" đến một điểm nhất định, vấn đề chỉ là "gần như thế nào".
Bạn có hai tùy chọn ở đây:
- giới hạn kết quả của
$near
- sử dụng
$within
lệnh
Tôi nghĩ thứ bạn đang tìm là $within
lệnh
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Sau đó, bạn có thể sắp xếp chúng theo một số khóa khác:
db.places.find(...).sort({created:1})
Tuy nhiên, lệnh bên trong có thể cung cấp quá nhiều kết quả, vì vậy bạn có thể muốn đặt một số logic để giới hạn số lượng mục được trả về bởi $within
.
db.places.find(...).limit(50).sort({created:1})
Sự thật là, nếu bạn đạt đến một giới hạn cụ thể, giá trị của $within
lệnh thường bắt đầu giảm xuống. Mã khách hàng của bạn có thể muốn kiểm tra xem bạn có đạt đến kết quả tối đa hay không.