Sta*_*tsu 0 sorting date proximity mongodb
如何按mongoDB中的邻近度和日期排序?我试过这个.但他们只按日期排序:
coll.find({'date':{$gte:date},'location':{$nearSphere:[lat,lng]}}).sort({'date':1}).execFind(function (err, docs) {})
Run Code Online (Sandbox Code Playgroud)
我很感激帮助.
没有直接的方法可以使用$near或$nearSphere排序另一个字段,因为这两个运算符已经对结果进行了排序find().当您按"日期"再次排序时,您将重新排序结果.但是,您可以做的是$nearSphere逐步获取结果,并对每组结果进行排序.例如:
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) );
}
Run Code Online (Sandbox Code Playgroud)
您还应该了解在mongodb查询中指定地理空间坐标的顺序.MongoDB使用geojson规范,它以X,Y,Z顺序(即经度,纬度)进行坐标.