如何在Mongoose中正确指定geoNear查询中的最大距离?

时间:2016-01-25 12:54:20

标签: node.js mongodb express mongoose

我正在使用Express + Mongoose构建的应用程序查询MongoDB集合。我正在寻找一定距离的地理位置的文件。结果显示文档远远超出我指定的最大距离。

这是我查询的集合的模型:

LocationSchema = new mongoose.Schema({  
    id: {
        type: String,
        unique: true
    },
    ref: String,
    name: String,
    loc: {
        type: [Number],  // [<longitude>, <latitude>]
        index: '2d'      // create the geospatial index
    }
});

这是查询数据库的代码(通过Mongoose):

var queryOptions = {
    maxDistance: 30,
    // maxDistance : 30 / 6371, // <-- (this doesn't work)
    distanceMultiplier: 6371, // tell mongo how many radians go into one kilometer.
    spherical: true,
    limit: 60
};

location.geoNear([latitude, longitude], queryOptions, processResults);

在此屏幕截图中,我在查询中指定的坐标是都柏林的中心。正如您所看到的,结果远远超过我指定的30km最大距离。

我哪里出错?

enter image description here

1 个答案:

答案 0 :(得分:0)

问题在于这行代码:

location.geoNear([latitude, longitude], queryOptions, processResults);

首先应该是经度,然后是纬度!将其更改为此解决了问题:

location.geoNear([longitude, latitude], queryOptions, processResults);

简单。