2016-03-16 4 views
8

マングース4.4は、今あなたが文書の配列を検証し、有効な場合は、1回の操作ではなく、各ドキュメントの1で、すべてのそれらを挿入できますinsertMany機能を持っているを制限します非常に大きな配列、私はこれらをバッチする必要がありますか?または、サイズや配列に制限はありませんか?マングースinsertManyは

たとえば、すべての映画について新しいドキュメントを作成したいと思います.1万の映画があります。

答えて

6

個人的な経験に基づいて、100-200のバッチを使用することをお勧めします。

insertManyの操作グループは、多くても1000操作を持つことができます。グループがこの制限を超えると、MongoDBはグループを1000以下の小さなグループに分割します。たとえば、キュ​​ーが2000個の操作で構成される場合、MongoDBは2つのグループを作成し、それぞれ1000個の操作を行います。

サイズとグループ化の仕組みは内部パフォーマンスの詳細であり、将来のバージョンで変更される可能性があります。

シャードされたコレクションで順序付けされた操作リストを実行すると、順序付けリストでは前の操作が完了するのを待たなければならないので、一般に順序付けられていないリストを実行するより遅くなります。

4

The methodはその配列をとり、MongoDBのinsertManyメソッドを使ってそれらの配列を挿入します。そのため、配列自体のサイズは実際にはどれくらいあなたのmachine can handleに依存します。

しかし、MongoDBが複数の操作をどのように扱うかについては、制限はありませんが、考慮すべき点があります。デフォルトでは、一度にbatch of 1000 operationsを処理し、それ以上のものを分割します。

1

Mongoの3.6更新:

insertMany()の制限が1000100,000からincreased in Mongo 3.6を有しています。 これで、100,000より上のグループは、それに従って小グループに分けられます。 たとえば、200,000の操作を持つキューは分割され、Mongoはそれぞれ100,000の2つのグループを作成します。