javascript-按距离对mongo查询进行排序

给出以下代码:

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

为什么收集到客户后我无法对收集进行正确排序?这有助于按以下类型过滤查询:“ location.coordinates”:-1.

解决方法:

$near运算符应已按距离对结果进行排序.只需删除排序选项,它应该会为您提供所需的结果.

从mongodb文档中:

排序操作

$near按距离对文档进行排序.如果还为查询包括sort(),sort()将对匹配的文档重新排序,从而有效地覆盖$near已经执行的排序操作.在对地理空间查询使用sort()时,请考虑使用$geoWithin运算符,该运算符不对文档进行排序,而不是对$near进行排序.

上一篇:MapReduce(Python)-如何对Top-N列表的reducer输出进行排序?


下一篇:用Java降序选择对象数组