【问题标题】:Node.js and Mongoose return 2D queryNode.js 和 Mongoose 返回二维查询
【发布时间】:2023-04-06 13:03:02
【问题描述】:

我有一个简单的问题,我试图在我的 Node.js 服务器中查询后返回一个 MongoDB 文档:

var coords = [];
        coords[0] = req.query.valArray.lng; // client latitude
        coords[1] = req.query.valArray.lat; // client longitude
        var distanceInKM = req.query.valArray.rangeKM; // the range 
         //the query that its results i want to return by res.send()
        db.Jobs.find( { 
            $and: [ { {exp: req.query.valArray.exp} }, 
                      { field: req.query.valArray.field } 
                  ] } )

我的问题是:

  1. 如何根据req.query(exp = query.exp)和res.send()函数的其余参数返回文档。
  2. 如何从当前位置(lng , lat) 开始按坐标和范围进行搜索,换句话说,从坐标中创建一个半径,所有匹配的作业都将以 json 形式返回。

【问题讨论】:

    标签: javascript json node.js mongodb 2dsphere


    【解决方案1】:

    您无需重新发明轮子。您的方法不会考虑地球的曲率,因此如果距离很大,您的计算将不准确。

    我建议使用 MongoDB 已经支持的 Geospatial Indexes。

    更新

    例如,您可以使用 $centerSphere 运算符返回从中心点开始半径范围内的文档(示例取自那里)。

    {
      <location field>: {
         $geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] }
         }
    }
    

    为此,您需要以GeoJSON 格式存储您的坐标(您只需向您的html5 坐标添加一些元字段)。

    【讨论】:

    • 但是你还是没有回答问题,坐标有html5的地理位置值,如何从Mongo查询中以json的形式返回值?
    • 如果我需要写一个更明确的例子,请告诉我,尽管我认为你可以从这里解决问题。
    猜你喜欢
    • 2021-02-16
    • 2019-08-29
    • 2018-06-20
    • 2011-12-16
    • 1970-01-01
    • 2014-12-04
    • 2018-06-12
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多