Tôi có một tập hợp các cửa hàng có chỉ mục địa không gian trên vị trí thích hợp.MongoDB Bound Queries: Làm cách nào để chuyển đổi dặm thành radian?
Điều tôi đang cố gắng thực hiện được cho vĩ độ, vĩ độ và bán kính tìm kiếm (mi) của người dùng, tôi muốn trả về danh sách các cửa hàng nằm trong các thông số đó.
Tôi đã xem ví dụ sau trên tài liệu MongoDB (http://www.mongodb.org/display/DOCS/Geospatial+Indexing), nhưng có vẻ như khoảng cách bằng radian.
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Vì vậy, công thức để chuyển đổi dặm để radian là gì?
Giải pháp Những người tuyệt vời tại Mongodb-người dùng đã giúp tôi tìm câu trả lời. Về cơ bản, những gì tôi đã thực sự tìm kiếm là một cách để hạn chế khoảng cách.
mỗi, tài liệu được cập nhật, có một tham số thứ 3 đến $ gần truy vấn: Bạn cũng có thể sử dụng $ gần với khoảng cách tối đa
db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 } }).limit(20)
Giá trị với $ maxDistance là trong radian; như vậy, tôi đã phải mất khoảng cách của tôi trong dặm và chia nó bằng 69.
Cảm ơn bạn!
tôi đã có thể tìm thấy câu trả lời của tôi bằng cách đăng câu hỏi của tôi trên mongdb người dùng Google Group (http://groups.google.com/group/mongodb-user/browse_thread/thread/d37c781bbfff5f08). – Abe
Lưu ý: chia cho 69 là một sự chuyển đổi thô từ dặm để * độ *, không radian. Độ chính xác ở đây vì đây là truy vấn ol ''$ gần' đơn giản (có nghĩa là' $ maxDistance' phải nằm trong cùng đơn vị với toạ độ), không phải là truy vấn hình cầu (mà * do * yêu cầu '$ maxDistance' bằng radian). –