实用mongoose查询经纬度距离,返回的数据超过maxdistance?
代码如下:
location:{type:[Number],index: '2d'},
Shop.find({location:{$near:loc,$maxDistance: 5}}).limit(50).exec(function(err, doc) {
if (err) {
console.log(err);
}
callback(doc);
});
maxDistance:5 代表查询距离此经纬度5km范围的坐标,返回的结果之中有满足条件的值(小于5km)但是也有大于5km的值,而且有大很多的,请问是哪里出了错呢?
完整的代码如下:
module.exports = function( mongoose) {
var ShopSchema = new mongoose.Schema({
shopName: { type: String, unique: true },
address: { type: String},
location:{type:[Number],index: '2d'},
shopPicUrl: {type: String},
shopPicTrueUrl:{type: String},
mark: { type: String},
open:{type:Boolean},
shopType:{type:String},
dish: {type: [{
dishName: { type: String},
tags: { type: Array},
price: { type: Number},
intro: { type: String},
dishPic:{ type: String},
index:{type:Number}
}]}
});
var Shop = mongoose.model('Shop', ShopSchema);
var createShop = function(shopName, address,location, shopPicUrl, open,shopType,res, callback) {
var shopInstance = new Shop({
shopName: shopName,
address: address,
location: location,
shopPicUrl: shopPicUrl,
open:open,
shopType:shopType
//shopPicTrueUrl:shopPicTrueUrl
});
shopInstance.save(function(err){
callback(err);
});
};
return {
createShop: createShop
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
https://docs.mongodb.com/manu...
To specify a point using legacy coordinates, $near requires a 2d index and has the following syntax:
{
$near: [ <x>, <y> ],
$maxDistance: <distance in radians>
}
这时候的单位是弧度,所以你查询的时候需要将条件转换成弧度单位。
maxDistance的单位是公里吗?......
怎么不是英里、公米......?
经纬度如何转换成公里?