将mongodb聚合框架结果导出到新集合

hot*_*ips 16 mongodb aggregation-framework

我想将聚合框架结果保存到新集合中.我知道目前使用命令本身的框架是不可能的.

shell中有解决方法吗?

Sal*_*ali 40

Mongo 2.6.0开始,您可以本机执行此操作,无需任何其他操作.

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

检查新的聚合运算符$ out以获取更详细的示例.

PS使用这种方式你不限于16Mb大小.


Joh*_*yHK 21

更新:请参阅Salvador的回答,了解如何在MongoDB 2.6+中更有效地执行此操作.


将聚合结果保存在变量中,然后将其result属性插入到新集合中:

var result = db.foo.aggregate(...);
db.bar.insert(result.result);
Run Code Online (Sandbox Code Playgroud)

  • 只有无赖需要将所有结果值保存在内存中.有关`$ out`的问题,请参见[here](https://jira.mongodb.org/browse/SERVER-3253). (2认同)
  • 此外,该结果集需要符合标准的MongoDB文档大小(16MB). (2认同)