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

mongodb, sắp xếp theo geoNear và ngày?

Không có cách nào trực tiếp để sử dụng $near hoặc $nearSphere và sắp xếp theo trường khác, vì cả hai toán tử này đã sắp xếp kết quả của việc thực hiện find() . Khi bạn sắp xếp lại theo 'ngày tháng', bạn đang sắp xếp lại kết quả. Tuy nhiên, những gì bạn có thể làm là lấy kết quả từ $nearSphere tăng dần và sắp xếp từng nhóm kết quả. Ví dụ:

function sortByDate(a, b) { return a.date - b.date; }

// how many results to grab at a time
var itersize = 10;
// this will hold your final, two-way sorted results
var sorted_results = new Array();
for (var i=0, last=db.coll.count(); i<last-itersize; i+=itersize) {
    var results = db.coll.find( {"date":{$gte:date},
                                 // longitude, then latitude
                                 "location":[lng, lat]} ).skip(i).limit(itersize).toArray();
    // do date sorting app-side for each group of nearSphere-sorted results
    sorted_results = sorted_results.concat( results.sort(sortByDate) );
}

Bạn cũng nên biết thứ tự bạn chỉ định tọa độ không gian địa lý trong các truy vấn mongodb. MongoDB sử dụng geojson spec, có tọa độ theo thứ tự X, Y, Z (tức là kinh độ, vĩ độ).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi ứng dụng sau khi triển khai ứng dụng Meteor 1.0 trên heroku

  2. tạo tài liệu mongodb với tài liệu con về mặt nguyên tử?

  3. Hợp lý HOẶC cho hai trường khác nhau trong $ nơi truy vấn trong mongodb

  4. MongoDB:đếm số lượng mục trong một mảng

  5. Nhận các giá trị khác biệt được sắp xếp với MongoTemplate