2015-03-31 177 views
0

我有一个简单的问题,我想在我的Node.js服务器查询之后返回MongoDB的文档:的Node.js和猫鼬回归2D查询

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. 如何通过协调(coords)和当前位置(lng , lat)的范围进行搜索,换句话说,从所有匹配的作业将作为json返回的坐标创建一个半径。

回答

1

您不需要重新发明轮子。你的方法不会考虑地球的曲率,所以如果距离很大,你的计算就会不准确。

我会建议使用Geospatial Indexes已支持MongoDB

UPDATE

例如,你可以使用$centerSphere运营商从一个中心位置(例如从那里取)半径范围内返回的文档。

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

要做到这一点,你需要你的坐标存储在GeoJSON格式(你需要将HTML5添加坐标短短元字段)。

+0

但你仍然没有回答这个问题,坐标有html5地理位置值,如何从Mongo查询返回值作为json? – 2015-04-01 06:41:26

+0

让我知道是否需要写一个更明确的例子,但我认为你可以从这里弄清楚事情。 – Pio 2015-04-01 09:48:46

+0

谢谢!我有地理位置找到! – 2015-04-01 10:06:15