0

1 つのコレクションに配列値があります。配列値をあるコレクションから別のコレクションに移動したいと考えています。

fruits : [ 
           { "apple","banana" } 
         ]

この配列値の値をあるコレクションから別のコレクションに移動する方法は?

私は、あるコレクションから値を取得し、それを一時変数に格納してから、別のコレクションを更新してこの一時変数を追加することを考えています。しかし、これが簡単な方法ではないことはわかっています。

だから、これを行う簡単な方法はあるのだろうか?

私の質問が明確であることを願っています。どんな助けでも大歓迎です。

4

1 に答える 1

1

私は、あるコレクションから値を取得し、それを一時変数に格納してから、別のコレクションを更新してこの一時変数を追加することを考えています。しかし、これは簡単な方法ではないことを私は知っています。

@sergioが指摘したように。それがおそらく最も簡単な方法です。

MongoDBには、これをすべて1回の更新呼び出しで実行できるクロスコレクション更新がありません(SQLの場合とは異なります)。

もちろん、MongoDBがそれを行うことは不可能ではなく、まだ実装されていないだけです。

もちろん、この種のことを定期的に行わないことをお勧めします。そうしないと、特にそれらのドキュメントを現在のレコード割り当てから新しいレコードに移動する必要がある場合に、パフォーマンスに大きな問題が発生する可能性があります(サイズの違いによる)。

別のコレクションにプッシュしたいものがサブドキュメントであることを考えると、別のコレクションに簡単に保存できるデータの「表示」を作成するために集計フレームワークを使用することもお勧めしません。これは、データがすでに実行されており、集計フレームワークを使用すると事態が複雑になるためです。

代わりに、ソースドキュメントを繰り返し処理し、値を取得して、宛先コレクションのドキュメントにプッシュするだけです。

これらのドキュメントが新しく、ある種の集計を実行しようとしている場合は、MapReduceを使用することもできます。MRは実際にはドキュメント間で値を移動するようには設計されておらず、集約されたドキュメントを作成してコレクションに保存するように設計されていることに注意してください。

于 2013-01-29T10:22:11.117 に答える