我正在使用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最大距离。
我哪里出错?
答案 0 :(得分:0)
问题在于这行代码:
location.geoNear([latitude, longitude], queryOptions, processResults);
首先应该是经度,然后是纬度!将其更改为此解决了问题:
location.geoNear([longitude, latitude], queryOptions, processResults);
简单。