【问题标题】:Is it ok to use $out for temporary collections?可以将 $out 用于临时集合吗?
【发布时间】:2015-04-27 01:34:35
【问题描述】:

我尝试创建单个聚合请求,但没有任何运气 - 我需要拆分它。我想我可以做到以下几点:

  1. 第一个聚合请求将过滤/转换/排序/限制文档 并使用$out 将结果保存到临时集合中
  2. 之后,我将临时执行 2-3 个聚合请求 收藏
  3. 最后,我将删除临时集合

通过将数据保存到临时集合中,我将跳过后续聚​​合请求的过滤/排序/限制阶段。

没事吧?这种方法的开销是多少? $out运算符的主要用途是什么?

【问题讨论】:

  • $out 运算符的常见用法是允许使用大于 BSON 文档最大大小的聚合结果(在 MongoDB 3.0 中,内联结果限制为 16MB)。使用$out 创建临时/临时集合也是一个合理的用例。如果您尚未在聚合管道上发布问题,那么可能值得这样做,看看是否有更简洁或更有效的方法可以在少于 3-4 次聚合传递中实现相同的结果。我认为很多次通过表明额外的计算甚至可以在客户端代码中更好地完成;-)。

标签: mongodb aggregation-framework


【解决方案1】:

是的; MongoDB 在运行 map-reduce 聚合时会自行执行此操作:Temporary Collection in MongoDB

如果可以在单个聚合或 map-reduce 操作中完成,请详细了解您要完成的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多