MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Sắp xếp kết quả MongoDB GeoNear theo thứ gì khác ngoài khoảng cách?

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:

  1. giới hạn kết quả của $near
  2. 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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Ruby Driver 2.5.x Vấn đề phân biệt chữ hoa chữ thường với tên máy chủ trên bộ bản sao

  2. Phát triển lược đồ cơ sở dữ liệu để thông báo như facebook

  3. Mongoid hay MongoMapper?

  4. Tạo phương pháp cập nhật và lưu tài liệu với mongoose?

  5. Làm cách nào để tìm các tài liệu tương tự trong MongoDB?