Korrekter Weg, um viele Datensätze mit Node.js in Mongodb einzufügen

9

Ich habe mich gefragt, wie man Masseneinfügungen in Mongodb (obwohl es irgendeine andere Datenbank sein könnte) mit Node.js

macht

Ich habe den folgenden Code als ein Beispiel geschrieben, obwohl ich glaube, dass es floored ist, da db.close () ausgeführt werden kann, bevor alle asynchronen collection.insert-Aufrufe abgeschlossen sind.

%Vor%     
Richard Hensman 30.12.2015, 13:19
quelle

4 Antworten

11

Wenn Ihr MongoDB-Server 2.6 oder neuer ist, sollten Sie besser Schreibbefehle verwenden Massen-API , die die Ausführung von Masseneinfügungsoperationen ermöglichen, die einfach Abstraktionen über dem Server sind, um das Erstellen von Massenoperationen zu erleichtern und somit Leistungsverbesserungen mit Ihrem Update zu erzielen Sammlungen.

Das Senden der Bulk-Insert-Operationen in Stapeln führt zu weniger Datenverkehr zum Server und führt daher effiziente Wire-Transaktionen durch, indem nicht alles in einzelnen Anweisungen gesendet wird, sondern stattdessen in verwaltbare Abschnitte für Serververpflichtungen aufgeteilt wird. Es ist auch weniger Zeit auf die Antwort im Rückruf mit diesem Ansatz warten.

Diese Bulk-Operationen kommen hauptsächlich in zwei Varianten vor:

  • Bestellte Massenvorgänge . Diese Operationen führen die gesamte Operation in Reihenfolge aus und gehen beim ersten Schreibfehler fehl.
  • Ungeordnete Bulk-Vorgänge . Diese Operationen führen alle Operationen parallel aus und aggregieren alle Fehler. Ungeordnete Bulk-Operationen garantieren nicht die Reihenfolge der Ausführung.

Hinweis: Für ältere Server als 2.6 konvertiert die API die Operationen abwärts. Es ist jedoch nicht möglich, 100% abwärts zu konvertieren, so dass es einige Randfälle gibt, in denen die richtigen Zahlen nicht korrekt gemeldet werden können.

In Ihrem Fall könnten Sie die Massen-API-Einfügeoperation in Stapeln von 1000 wie folgt implementieren:

Für MongoDB 3.2 + mit bulkWrite

%Vor%

Für MongoDB & lt; 3.2

%Vor%

Rufen Sie die Funktion createNewEntries() auf.

%Vor%     
chridam 30.12.2015, 13:50
quelle
5

Sie können insertMany verwenden. Es akzeptiert ein Array von Objekten. Überprüfen Sie die API .

    
Arjan Frans 30.12.2015 13:24
quelle
1

Neu in Version 3.2.

Die Methode db.collection.bulkWrite () bietet die Möglichkeit zum Einfügen von Massen , aktualisieren Sie und entfernen Sie Operationen. MongoDB unterstützt auch die Masseneinfügung über die db.collection.insertMany () .

In bulkWrite wird nur insertOne, updateOne, updateMany, replaceOne, deleteOne, deleteMany

unterstützt

In Ihrem Fall, um Daten mit einer einzelnen Codezeile einzufügen, kann die Option insertMany verwendet werden.

%Vor%
    
Dimuthu 22.10.2017 03:16
quelle
0
%Vor%     
Mrityunjay pandey 21.09.2017 15:51
quelle

Tags und Links