我们知道Node.JS以异步单线程方式工作。 我已经和MongoDB合作了好几个月了,说实话,我发现查询语言不那么强大,不如说好。聚合框架带来了重要的功能,但是像内部查询这样的SQL功能非常多(注意我并不是在谈论大规模连接)。 所以我发现自己多次为这种缺乏提供可怕的结果集遍历(foreach)以便塑造我想要的结果。
显然,大型数据集无法实现。在Node.JS环境中,这些事情是真正的灾难,因为我阻止整个服务器提供单个请求。
你如何处理这些cpu绑定任务?
答案 0 :(得分:1)
实际上整个Node.js架构基于单线程事件循环,因此任何CPU绑定函数都会阻塞整个服务器,直到函数完成其操作。
可能的解决方法之一可能是
答案 1 :(得分:0)
理想情况下,您不会重建结果。您设计了MongoDB可以处理的查询以获得您想要的结果...打开与该特定问题相关的问题可能会更好,因为可能存在您遗漏的问题。
但是,假设您确实发现了一个异常(这不太可能),并且您需要构建一大堆数据,这些数据存在瓶颈。这个操作很有可能再次优化......你应该打开一个与这个问题相关的问题,看看可以做些什么改进。
让我们说你确实是一个非常罕见的例外,所有上述内容都不适合你。您有几个(更复杂的)选项可供选择: