首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在$out聚合中,我什么时候绝对需要MongoDB操作符?

在$out聚合中,我什么时候绝对需要MongoDB操作符?
EN

Stack Overflow用户
提问于 2015-11-25 08:25:08
回答 1查看 649关注 0票数 0

MongoDB在$out上的聚合文档说:

“获取聚合管道返回的文档并将它们写入指定的集合。$out运算符必须是管道中的最后一步。$out运算符允许聚合框架返回任意大小的结果集。”

https://docs.mongodb.org/manual/reference/operator/aggregation/out/

因此,一个问题可能是聚合可能耗尽内存或使用大量内存。但是$out在这里会有怎样的帮助,最终如果聚合返回了很多桶,它们将首先保存在内存中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-25 09:27:55

当您有特定的用例时,$out运算符很有用,它需要很长时间才能计算,但不需要一直都是最新的。

假设你有一个网站,你想要一个前十名,目前最受欢迎的文章在首页(大多数点击在过去60分钟)。要创建此统计数据,需要使用如下管道解析访问日志集合:

  • 最后一个小时$match
  • $group通过文章id和用户过滤掉重新加载
  • 再次通过$group -id获取每一篇文章和用户的命中计数。
  • 按计数计算$sort。
  • $limit到10个结果

当你有一个非常受欢迎的网站有大量的内容,这可能是一个相当重的聚合。当你把它放在首页上时,你需要对每一个首页点击。这可能会对数据库造成相当严重的负载,并大大降低加载时间。

我们如何解决这个问题?

与其在每一次页面点击时执行聚合,不如每分钟使用cron作业执行一次,它使用$out将聚集的十大列表放入一个新集合中。然后,您可以直接查询该集合中的缓存结果。从10个文档集合中获得所有10个结果将比一直执行该聚合要快得多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33911573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档