簡體   English   中英

按距離排序mongo查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM