Node.js 如何使用geoNear查询MongoDB?

Node.js 如何使用geoNear查询MongoDB?,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我尝试使用聚合函数geoNear和near来定位距离,这取决于使用mongodb的经度和纬度 `router.get('/devops' , (req,res,next) => { /* Devops.find({}) .then((alldevops) => { res.send(alldevops); }) */ Devops.aggregate().near({ near: [parseFloat(req.query.lng)

我尝试使用聚合函数geoNear和near来定位距离,这取决于使用mongodb的经度和纬度

`router.get('/devops' , (req,res,next) => {
   /*
   Devops.find({})
   .then((alldevops) => {
      res.send(alldevops);
   })
   */
  Devops.aggregate().near({
   near: [parseFloat(req.query.lng), parseFloat(req.query.lat)],
   maxDistance: 100000,
   spherical: true,
   distanceField: "dist.calculated"
  }).then((alldevops)=>{
     res.send(alldevops);
  });

});`
我得到一个错误,上面写着

MongoError:geo-near在查询GeoJSON点时只接受一个参数。找到额外字段:$maxDistance:100000.0


首先,您的模式应该类似于下面指定的jeo.json格式

{
  "other_key":"other_key_type"

 // this is important
  "geometry": {
    "type": "Point",
    "coordinates": [Number] // it is [latitude, longitude], yes it is reverse way
  }

}
现在,您已经有了使用该模式将数据插入数据库的模式

现在,您可以通过以下示例对数据应用地理近距离概念

YourModal.aggregate([
    {
      $geoNear: {
        near: { type: 'Point', coordinates: [16.51194, 80.735627] },
        distanceField: 'dist.calculated',
        includeLocs: 'dist.location',
        spherical: true
      }
    },
    {
      $project: {
        dist: 1
      }
    }
  ])
在这里你会得到很多选择,但我已经从给定坐标中取出了唯一的距离。 我认为这将给出一个从数据库实现geoNear查询的简单想法