2016-08-22 182 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的伎俩,我不弄了连接超时错误。