[英]Sorting mongo query by distance
給出以下代碼:
Meteor.publish('nearestVenues', function(params){
var limit = !!params ? params.limit : 50;
params ? !!params : 50;
if (!!params && !!params.coordinates){
return Venues.find(
{ 'location.coordinates':
{ $near :
{ $geometry :
{ type : "Point" ,
coordinates : params.coordinates
},
$maxDistance : 6000,
spherical: true
}
}
}, {limit: limit, sort: 'location.coordinates': -1 });
} else {
return Venues.find({}, {limit: limit});
}
});
為什么一旦它碰到客戶端我就無法正確對它進行排序? 這可以在sort:'location.coordinates':-1處過濾查詢。
$near
運算符應該已經按距離對結果進行排序。 只需刪除排序選項,它應該會給你想要的結果。
從mongodb文檔:
排序操作
$near
距離排序文件。 如果還為查詢包含sort(),則sort()會重新排序匹配的文檔,從而有效地覆蓋$near
已執行的排序操作。 將sort()與地理空間查詢一起使用時,請考慮使用$ geoWithin運算符,它不對文檔進行排序,而不是$ near。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.