集計フレームワークの結果を新しいコレクションに保存します。 私は、コマンドそのものの現時点ではフレームワークでは不可能だと知っています。mongodb集約フレームワークの結果を新しいコレクションにエクスポートする
シェルには回避策がありますか?
集計フレームワークの結果を新しいコレクションに保存します。 私は、コマンドそのものの現時点ではフレームワークでは不可能だと知っています。mongodb集約フレームワークの結果を新しいコレクションにエクスポートする
シェルには回避策がありますか?
更新: MongoDB 2.6以降でこれを行うより効率的な方法については、Salvadorのanswerを参照してください。
保存変数に集計結果と、新しいコレクションにそのresult
プロパティを挿入します。
var result = db.foo.aggregate(...);
db.bar.insert(result.result);
モンゴ2.6.0から始めて、あなたは追加の操作なしでネイティブにこれを行うことができます。
db.<collection>.aggregate([
{ <operation> },
{ <operation> },
...,
{ $out : "<output-collection>" }
])
より詳細な例については、新たな集計演算子$outを確認してください。
P.S.この方法を使用すると、16Mbのサイズに制限されません。
それでは、2.6を前にして何をするのですか?私は16Mbの制限を回避し、2.4のアグリゲーションパイプラインを使用して新しいコレクションを作成する必要があります。 –
もう一度、約16 MBの限界を得る必要があります。 2.4インスタンスで作業していました。 'find()'、 'foreach()'、 'insert()'を使いました。 –
result.resultは動作していません。toArray()を試してください。
var result = db.coll.aggregate(...);
db.bar.insert(result.toArray());
すべての結果値をメモリに保持する必要があります。 '$ out'に関する問題については、[here](https://jira.mongodb.org/browse/SERVER-3253)を参照してください。 –
また、その結果セットは標準のMongoDB文書サイズ(16MB)に収まる必要があります。 –
@AidanFeldman:集約インライン結果は、最大限のBSONドキュメントサイズに[既に制限されています](http://docs.mongodb.org/manual/core/aggregation/#result)です。 – Stennie