2014-10-30 77 views
1

我正在針對我的開發和生產環境測試地理空間查詢。生產服務器是數字海洋VPS服務器。查詢在開發機器中正常工作,但是在生產時它返回一個空數組。但是,當我直接從生產服務器的MONGO shell執行查詢時,它確實返回結果。以下是查詢功能MongoDB地理空間查詢返回空數組

exports.nearby=function(req,res){ 

     var lat= +req.params.lat, 
      long= +req.params.long, 
      distance = +req.params.radius, 
      cat = req.query.cat || 'auditorium'; 

     Item.find({ 
     "loc": { 
      $near: { 
      $geometry: { 
       type: "Point", 
       coordinates: [long,lat] 
      }, 
      $maxDistance: distance 
      } 
     }, 
     category: cat 
     }, function(err,data){ 
     err ? res.json(err) : res.json(data); 
     }); 

} 

開發環境

本地計算機: 的Ubuntu 14.04,節點:v0.10.29,MongoDB的:2.6.4

生產: 的Ubuntu 14.04,節點: v0.10.30,MongoDB:2.6.5

非常感謝任何幫助...謝謝

+0

什麼是你的外殼中查詢集合的名稱?你意識到貓鼬複數模型名稱作爲集合名稱權? – 2014-10-30 02:15:47

+0

你如何執行查詢?它是在一個快速應用程序內?我的猜測是你的生產環境環境變量或服務器配置不同... – gabereal 2014-10-30 02:33:19

+0

@NeilLunn集合名稱是'items'。是的,我知道貓鼬會複製集合的模型名稱「item」 – Jasnan 2014-10-30 04:06:46

回答

0

您是否在生產數據庫中創建了index2d?它是相同的數據庫嗎?

這對我工作得很好:

var options = { $and:[{location : { $near : [longitude, latitude], $maxDistance : distance/111.12}}]}; 
User.find(options, '_id location').exec(function (err, users) {