MongoDB 聚合 V/S 简单查询性能?

标签 mongodb performance aggregation-framework

我正在重新提出这个问题,因为我认为这个问题应该与这个问题分开讨论 in-mongodb-know-index-of-array-element-matched-with-in-operator .

我正在使用 mongoDB,实际上我正在使用简单的查询来编写我的所有查询,这些查询是查找、更新等(无聚合)。现在我阅读了许多 SO 帖子,例如看到这个帖子 mongodb-aggregation-match-vs-find-speed .现在我想为什么要增加服务器上的计算时间,因为好像我会计算更多然后我的服务器负载会变得更多,所以我尝试使用聚合,我认为我现在正朝着正确的方向前进。但后来在我之前的问题 andreas-limoli告诉我不要使用聚合,因为它很慢,并且在服务器上使用简单的查询和计算。现在我真的不知道应该使用什么,我从一年开始就开始使用 mongoDB,但是当数据大小增加时我对它的性能一无所知,所以我完全不知道我应该选择哪个。

还有一件事我没有在任何地方找到,如果聚合比 $lookup 慢,因为 $lookup 是我考虑使用聚合的最重要的事情,否则我必须串行执行许多查询然后计算在我看来在聚合面前很差的服务器上。

另外,当将数据从一个管道传递到另一个管道时,我读到了对 mongodb 聚合的大约 100MB 限制,所以人们如何有效地处理这种情况,以及如果他们打开磁盘使用,那么因为磁盘使用比人们处理这种情况的方式减慢了一切。

此外,我获取了 30,000 个样本集合,并尝试使用 $match 和 find 查询运行聚合,我发现聚合比 find 查询快一点,后者执行聚合需要 180 毫秒,而 find 执行需要 220 毫秒。

请帮帮我吧伙计们,这对我真的很有帮助。

最佳答案

MongoDB 中的聚合框架类似于 SQL 中的连接操作。聚合管道通常是资源密集型操作。因此,如果您的工作对简单查询感到满意,您应该首先使用该查询。

但是,如果绝对有必要,那么您可以使用聚合管道,以防您需要从多个集合中获取数据。

关于MongoDB 聚合 V/S 简单查询性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121490/

相关文章:

mongodb,通过哈希键查找

php - 检查字段中的数组键是否存在于mongo中

mongodb - 将 $Redact 与正则表达式一起使用

c# - 如何防止在更新到 MongoDB 时出现 "_t"字段?

c - 如何计算C中每个进程的平均CPU使用率

javascript - ReasonML 对命令式 vanilla JavaScript 的性能

node.js - Mongoose 如何编写带if条件的查询?

node.js - AJAX > MongoDB 查询只工作了五次,然后服务器停止处理请求,我无法刷新页面

c - 如何改进 C 程序中的拼写检查时间?

mongodb - 如何确定平均值是 0 还是 null?