Mongoose insertMany limit

8

Mongoose 4.4 hat jetzt eine insertMany -Funktion, mit der Sie ein Array von Dokumenten validieren und sie einfügen können, wenn sie alle mit einer Operation statt einer für jedes Dokument gültig sind:

var arr = [{ name: 'Star Wars' }, { name: 'The Empire Strikes Back' }]; Movies.insertMany(arr, function(error, docs) {});

Wenn ich ein sehr großes Array habe, sollte ich diese chargen? Oder gibt es keine Begrenzung für die Größe oder Anordnung?

Ich möchte zum Beispiel ein neues Dokument für jeden Film erstellen, und ich habe 10.000 Filme.

    
lifwanian 16.03.2016, 17:35
quelle

3 Antworten

6

Ich würde empfehlen, basierend auf persönlicher Erfahrung, Charge von 100-200 gibt Ihnen eine gute Mischung von Leistung, ohne Ihr System zu belasten.

insertMany Gruppe von Operationen kann höchstens 1000 Operationen haben. Wenn eine Gruppe diese Grenze überschreitet, teilt MongoDB die Gruppe in kleinere Gruppen von 1000 oder weniger auf. Wenn die Warteschlange beispielsweise aus 2000 Operationen besteht, erstellt MongoDB 2 Gruppen mit jeweils 1000 Operationen.

Die Größen und Gruppierungsmechanismen sind interne Leistungsdetails und können in zukünftigen Versionen geändert werden.

Das Ausführen einer geordneten Liste von Operationen für eine Sammlungssammlung ist im Allgemeinen langsamer als das Ausführen einer ungeordneten Liste, da bei einer sortierten Liste jede Operation auf den Abschluss der vorherigen Operation warten muss.

    
Saleem 16.03.2016, 18:09
quelle
4

Die Methode nimmt dieses Array und beginnt sie durch die insertMany-Methode einzufügen in MongoDB, also hängt die Größe des Arrays selbst davon ab, wie viel Ihr Rechner kann handhaben .

Aber bitte beachten Sie, dass es einen anderen Punkt gibt, der keine Einschränkung ist, sondern etwas, das in Betracht gezogen werden muss, wie MongoDB mit mehreren Operationen umgeht; standardmäßig behandelt es Stapel von 1000 Operationen zu einer Zeit und teilt was mehr ist.

    
Rabea 16.03.2016 17:49
quelle
1

Aktualisierung von Mongo 3.6:

Das Limit für insertMany() wurde in Mongo 3.6 erhöht von 1000 bis 100,000 . Das bedeutet, dass Gruppen über 100,000 operations nun entsprechend in kleinere Gruppen unterteilt werden. Beispiel: Eine Warteschlange mit 200,000 -Operationen wird aufgeteilt und Mongo erstellt zwei Gruppen mit 100,000 .

    
FireBrand 14.02.2018 15:05
quelle

Tags und Links