在MongoDB中使用$ geoNear查找两点之间的距离时出错

时间:2019-09-03 21:50:39

标签: node.js database mongodb mongoose geolocation

我正在尝试使用$ geoNear mongoDB函数查找两点之间的距离并收到以下错误:

  

MongoError:错误处理查询:ns = Driveoo.vehiclesTree:GEONEAR
  field = location maxdist = 10000 isNearSphere =0↵排序:{}↵项目:{}↵计划者   返回错误:找不到$ geo的索引附近queryCar搜索   失败

请在下面找到我的代码:

exports.getNearestVehicles = function (req, res, next) {
    Vehicle.find({
      location: {
       $near: {
        $maxDistance: 10000,
        $geometry: {
         type: "Point",
         coordinates: [req.query.lat, req.query.long]
        }
       }
      }
     }).then( results => {
        return responseHandler.resHandler(true,JSON.stringify(results,0,2),"Car Response", res, 200);
    })
    .catch(error=> {
        return responseHandler.resHandler(false,null,error+"Car Search Failed", res, 200);
    });
}

有人可以解决我在哪里做错了吗?

1 个答案:

答案 0 :(得分:0)

您是否在查询之前创建了2d球面索引?

您可以按以下步骤创建索引

db.createIndex({'location','2dSphere'})

在以上查询中,您也没有使用geoNear,$geoNear 通常与聚合一起使用。