MongoDB在$out上的聚合文档说:
“获取聚合管道返回的文档并将它们写入指定的集合。$out运算符必须是管道中的最后一步。$out运算符允许聚合框架返回任意大小的结果集。”
https://docs.mongodb.org/manual/reference/operator/aggregation/out/
因此,一个问题可能是聚合可能耗尽内存或使用大量内存。但是$out在这里会有怎样的帮助,最终如果聚合返回了很多桶,它们将首先保存在内存中。
发布于 2015-11-25 09:27:55
当您有特定的用例时,$out运算符很有用,它需要很长时间才能计算,但不需要一直都是最新的。
假设你有一个网站,你想要一个前十名,目前最受欢迎的文章在首页(大多数点击在过去60分钟)。要创建此统计数据,需要使用如下管道解析访问日志集合:
当你有一个非常受欢迎的网站有大量的内容,这可能是一个相当重的聚合。当你把它放在首页上时,你需要对每一个首页点击。这可能会对数据库造成相当严重的负载,并大大降低加载时间。
我们如何解决这个问题?
与其在每一次页面点击时执行聚合,不如每分钟使用cron作业执行一次,它使用$out将聚集的十大列表放入一个新集合中。然后,您可以直接查询该集合中的缓存结果。从10个文档集合中获得所有10个结果将比一直执行该聚合要快得多。
https://stackoverflow.com/questions/33911573
复制相似问题