web-dev-qa-db-ja.com

mongodb集約フレームワークの結果を新しいコレクションにエクスポートします

集計フレームワークの結果を新しいコレクションに保存したいと思います。現時点では、コマンド自体ではフレームワークでは不可能です。

シェルに回避策はありますか?

17
hotips

更新:MongoDB 2.6以降でこれを行うためのより効率的な方法については、Salvadorの answer を参照してください。


集計結果を変数に保存してから、そのresultプロパティを新しいコレクションに挿入します。

var result = db.foo.aggregate(...);
db.bar.insert(result.result);
22
JohnnyHK

Mongo 2.6.0以降、追加の操作なしでこれをネイティブに実行できます。

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

より詳細な例については、新しい集計演算子 $ out を確認してください。

P.S。この方法を使用すると、16Mbのサイズに制限されません。

41
Salvador Dali

result.resultが機能しなくなった場合は、toArray()を試してください。

var result  = db.coll.aggregate(...);
db.bar.insert(result.toArray());
1
ddsh79