具有许多集合的 MongoDb 慢聚合(查找)

时间:2021-02-05 12:37:28

标签: node.js mongodb typescript performance mongoose

我正在处理一个 MEAN 堆栈项目,我在聚合中使用了太多集合,所以我使用了大量查找,这会对性能产生负面影响,并使聚合的执行速度非常慢。我想知道您是否有任何建议,我发现我们可以通过为每个集合创建我需要的对象数组到全局集合来减少查找,但是,我正在寻找最佳且安全的解决方案。 作为信息,我将所有集合的索引定义为 mongo。

感谢分享您的想法!

1 个答案:

答案 0 :(得分:0)

这是一个非常复杂的问题。即使您提供了所有架构和查询,回答也需要很长时间,而且要针对您的案例(即,对以后来的其他人没有用处)。

作为一般性答案,我建议您阅读非规范化并考虑重新设计一些数据库,如果此查询是您项目的核心。

这是一个很好的article,可以帮助您入门。

<块引用>

非规范化允许您避免一些应用程序级别的连接,但代价是具有更复杂和昂贵的更新。如果这些字段的读取频率比更新频率高得多,则对这些字段进行非规范化是有意义的。

一个简单的例子来概括它:

假设您有一个包含评论集合和用户集合的博客 您想显示带有用户名的评论。所以你必须为每个评论加载播放器。 相反,您可以将用户名保存在评论集合和用户集合中。 然后您将有一个快速查询来显示评论,因为您也不需要加载用户。但是如果用户改变了他们的名字,那么你将不得不用新名字更新所有的评论。这是主要的权衡。

如果数据库重新设计太困难,我建议拆分成多个聚合并将它们组合在内存中(即在您的节点服务器端代码中)

相关问题