sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb, sortering efter geoNær og dato?

Der er ingen direkte måde at bruge $near på eller $nearSphere og sorter efter et andet felt, fordi begge disse operatorer allerede sorterer resultaterne af at lave en find() . Når du sorterer igen efter 'dato', sorterer du resultaterne igen. Hvad du dog kan gøre, er at hente resultater fra $nearSphere trinvist, og sorter hvert sæt resultater. For eksempel:

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

Du skal også være opmærksom på den rækkefølge, du angiver geospatiale koordinater i mongodb-forespørgsler. MongoDB bruger geojson spec, som udfører koordinater i X, Y, Z rækkefølge (dvs. længdegrad, breddegrad).



  1. uploader fil til mappe på node-express-websted ved hjælp af multer med mongodb

  2. MongoDB og CodeIgniter

  3. mongodb gaffel i vinduer

  4. MongoSkin Kan ikke læse egenskaben 'apply' af undefined