繁体   English   中英

MongoDb 慢速聚合与许多 collections(查找)

[英]MongoDb slow aggregation with many collections (lookup)

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

感谢您分享您的想法!

这是一个非常复杂的问题。 即使您提供了所有模式和查询,也需要很长时间才能回答,并且对您的情况非常具体(即,对以后出现的其他人没有用处)。

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

这是一篇很好的文章,可以帮助您入门。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM