2016-08-22 172 views
1

我在Node.JS中有一個應用程序,它基本上每30分鐘從WebAPI檢索一個數據快照。 當我嘗試通過使用聚合查詢來詢問數據庫時,該應用程序觸發與超時有關的錯誤(MongoError:連接1到127.0.0.1:27017超時)。從我的日誌中我發現它恰好是30秒。 的彙總查詢是這樣的:MongoDB超時問題(Node.js)

collection.aggregate([{ 
      "$group": { 
       "_id": { 
        country: "$country", 
        user: "$user" 
       } 
      } 
     }]). 

我測試查詢不同的客戶端(但同一個數據庫)上,它需要aprox的60秒25.000.000記錄。我的假設是有一個超時參數,其值爲30秒,阻止我的應用程序完成查詢。 有人能告訴我如何在Node.JS中設置此參數嗎?我正在使用'mongodb'js庫,我的主機是Windows。

由於這是一個個人項目,我想調查如何使用MongoDB代替更傳統的解決方案,如Oracle或MySQL,但由於分析是整個應用程序的核心部分,因此這可能是一個難題。

+0

「該應用程序觸發與超時有關的錯誤」聽起來有點模糊。這個錯誤究竟是怎樣的?它從何而來? – pdenes

+0

錯誤是這樣的:MongoError:連接1到127.0.0.1:27017超時 – Bogdan

回答

4

我在這個答案中找到了一個解決方案:"Server x timed out" during MongoDB aggregation

基本上,連接字符串現在看起來是這樣的:

this.server = 'mongodb://127.0.0.1:27017/test?socketTimeoutMS=90000'; 

socketTimeoutMS的伎倆,我不弄了連接超時錯誤。