2015-03-31 105 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