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

Geonear sắp xếp theo khoảng cách và thời gian

Truy vấn chính xác để sử dụng ở đây sử dụng khung tổng hợp $geoNear giai đoạn đường ống để hỗ trợ việc này. Đây cũng là nơi duy nhất bạn có thể "sắp xếp" theo nhiều khóa, không may là "không gian địa lý" $nearSphere không có phép chiếu "meta" cho "khoảng cách" như $text có một "điểm số".

Cũng là geoNear lệnh cơ sở dữ liệu bạn đang sử dụng cũng không thể được sử dụng với "con trỏ" .sort() theo cách đó.

db.paging.aggregate([
    { "$geoNear": {
        "near": [106.606033,29.575897 ],
        "spherical": true,
        "distanceField": "distance",
        "distanceMuliplier": 6371,
        "maxDistance": 1/6371
    }},
    { "$sort": { "distance": 1, "createdate": -1 } },
    { "$skip": ( 2-1 ) * 2 },
    { "$limit": 5 }
])

Điều đó tương đương với những gì bạn đang cố gắng làm.

Với khuôn khổ tổng hợp, bạn sử dụng "các nhà khai thác đường ống" thay vì "sửa đổi con trỏ" để thực hiện những việc như $sort , $skip$limit . Ngoài ra những điều này phải theo thứ tự logic, trong khi các công cụ sửa đổi con trỏ thường hoạt động tốt.

Đó là một "đường ống", giống như "Đường ống Unix". |

Ngoài ra, hãy cẩn thận với "maxDistance" và "distanceMuliplier". Vì các tọa độ của bạn nằm trong "các cặp tọa độ kế thừa" chứ không phải GeoJSON định dạng, sau đó khoảng cách được đo bằng "radian". Nếu bạn có dữ liệu vị trí được lưu trữ GeoJSON thì kết quả được trả về bằng "mét".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tìm và đếm trong một truy vấn mongodb

  2. Cập nhật trình điều khiển Mongodb C # không thành công tất cả các phần tử của mảng con khi mảng trống

  3. Chuyển đổi chuỗi thành ngày tháng hoặc ISODate bằng cách sử dụng Mongo Shell trong MongoDB

  4. Lệnh gọi REST API chỉ hoạt động một lần

  5. Không thể xóa khỏi ngăn xếp MEAN góc cạnh của bộ sưu tập mongodb