sql >> Databáze >  >> NoSQL >> MongoDB

mongodb, řazení podle geoBlízko a datum?

Neexistuje žádný přímý způsob použití $near nebo $nearSphere a seřadit podle jiného pole, protože oba tyto operátory již třídí výsledky provedení find() . Když znovu seřadíte podle 'data', změníte řazení výsledků. Co však můžete udělat, je získat výsledky z $nearSphere postupně a třídit každou sadu výsledků. Například:

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

Měli byste si také být vědomi pořadí, v jakém zadáváte geoprostorové souřadnice v dotazech mongodb. MongoDB používá geojson spec, který provádí souřadnice v pořadí X, Y, Z (tj. zeměpisná délka, šířka).



  1. Instalace a konfigurace Redis na Ubuntu

  2. Node.js / Mongodb vložit zpětné volání vrací nedefinované

  3. Hybridní cloud vs. Úplný veřejný cloud – klady a zápory

  4. MongoDB $setUnion