gpt4 book ai didi

MongoDB - 聚合到另一个集合?

转载 作者:可可西里 更新时间:2023-11-01 09:13:14 25 4
gpt4 key购买 nike

我有一个流程,目前正在使用 Mongo 的 Map/Reduce 框架,但它的性能不是很好。这是一个非常简单的聚合,我对 3 个字段进行分桶,返回 4 个不同字段的总和,并传递另外 4 个字段的值(在每个分桶中是常量)。

由于 [ Map-Reduce performance in MongoDb 2.2, 2.4, and 2.6 中描述的原因]],我想将其转换为聚合框架以获得更好的性能,但我认为有 3 种障碍:

  1. 总结果可能很大,超过了 Mongo 的 16MB 限制,即使结果中的任何一个文档都非常小。
  2. 我可以直接映射/缩减到另一个集合,但聚合框架只能返回内联结果(我想?)
  3. 对于随着更多数据到达源集合而进行的增量更新,我可以将 MapReduceCommand.OutputType(在 Java 中)设置为 REDUCE 进行映射/缩减,这与我的使用完全匹配案例,但我没有在聚合框架中看到相应的功能。

在聚合框架中有没有好的方法解决这些?服务器现在是 2.4.3 版本 - 如果有新功能,我们可能会根据需要进行更新。

最佳答案

您现在可以使用 $out 来做到这一点如 mongo 中所述

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

该命令具有以下语法,其中 collection 将保存聚合操作的输出。 $out 只允许在管道的末端:

db.<collection>.aggregate( [
{ <operation> },
{ <operation> },
...,
{ $out : "<output-collection>" }
] )

关于MongoDB - 聚合到另一个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17216973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com