实用mongoose查询经纬度距离,返回的数据超过maxdistance?

发布于 2022-09-02 16:11:41 字数 1453 浏览 7 评论 0

代码如下:


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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏有森光若流苏 2022-09-09 16:11:41

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

这时候的单位是弧度,所以你查询的时候需要将条件转换成弧度单位。

梦里人 2022-09-09 16:11:41

maxDistance的单位是公里吗?......
怎么不是英里、公米......?
经纬度如何转换成公里?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文