how to sort by proximity and date in mongoDB? I tried this. But they just sort by date:
coll.find({\'date\':{$gte:date},\'location\':{$nearSphere:[lat,lng]}})
There's no direct way to use $near
or $nearSphere
and sort by another field, because both of these operators already sort the results of doing a find()
. When you sort again by 'date', you're re-sorting the results. What you can do, however, is grab results from the $nearSphere
incrementally, and sort each set of results. For example:
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
You should also be aware of the order you specify geospatial coordinates in mongodb queries. MongoDB uses the geojson spec, which does coordinates in X, Y, Z order (i.e., longitude, latitude).