MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb, sortowanie według geoNear i daty?

Nie ma bezpośredniego sposobu na użycie $near lub $nearSphere i sortuj według innego pola, ponieważ oba te operatory już sortują wyniki wykonania find() . Kiedy sortujesz ponownie według „dat”, ponownie sortujesz wyniki. Możesz jednak pobrać wyniki z $nearSphere przyrostowo i sortować każdy zestaw wyników. Na przykład:

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) );
}

Należy również pamiętać o kolejności określania współrzędnych geoprzestrzennych w zapytaniach mongodb. MongoDB używa geojson spec, który wykonuje współrzędne w kolejności X, Y, Z (tj. długość i szerokość geograficzna).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak sformatować dane dla MongoEngine PointField

  2. Problemy z publikowaniem/subskrypcją zapytania zbiorczego Mongo

  3. Typ osadzony Golang + MongoDB (osadzanie struktury w innej strukturze)

  4. połącz mongodb z djongo (Django)

  5. Nie można znaleźć modułu '../build/Release/bson'] kod:'MODULE_NOT_FOUND' } js-bson:Nie udało się załadować rozszerzenia bson c++, używając czystej wersji JS