我有一个 Node.JS 应用程序,它基本上每 30 分钟从 WebAPI 检索一次数据快照。 当我尝试使用聚合查询来询问数据库时,应用程序会触发与超时相关的错误(MongoError:连接 1 到 127.0.0.1:27017 超时)。从我的日志中我看到正好是 30 秒。 聚合查询是这样的:
collection.aggregate([{
"$group": {
"_id": {
country: "$country",
user: "$user"
}
}
}]).
我在不同的客户端(但相同的数据库)上测试了该查询,对于 25.000.000 条记录大约需要 60 秒。我的假设是,有一个值为 30 秒的超时参数阻止我的应用程序完成查询。 有人能告诉我如何在 Node.JS 中设置这个参数吗?我正在使用“mongodb”js 库,我的主机是 Windows。
由于这是一个个人项目,我想研究如何使用 MongoDB 而不是更传统的解决方案(例如 Oracle 或 MySQL),但这可能会破坏交易,因为分析是整个应用程序的核心部分。
最佳答案
我在这个答案中找到了解决方案:"Server x timed out" during MongoDB aggregation .
基本上,连接字符串现在看起来像这样:
this.server = 'mongodb://127.0.0.1:27017/test?socketTimeoutMS=90000';
socketTimeoutMS
成功了,我不再收到连接超时错误。
关于node.js - MongoDB 超时问题 (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39087570/