Laut MongoDB Dokumentation :
Größe der Massenoperation
Eine Massenoperation kann maximal 1000 Operationen haben.
Allerdings konnte ich Bulk mit einer viel größeren Anzahl von Operationen (etwa 300.000 Operationen) verwenden, indem ich Mongo 2.6 Bulk Operations API mit node-mongodb-native ( collection.initializeUnorderedBulkOp()
usw.) verwendete
Ist dieses Limit veraltet, oder fehlt mir gerade etwas? Weißt du, was das wirkliche Limit ist?
Ich habe ein Ticket in MongoDBs Jira geöffnet. Sie antworteten:
Sie haben Recht; Dieses Limit benötigt einige Erläuterungen in der Dokumentation. Das Limit liegt auf dem Server, aber die Clienttreiber verbergen das Limit für Anwendungsentwickler, indem sie Massenvorgänge in mehrere Stapel aufteilen.
Das ist eine interessante Aussage, und es ist neu in der Dokumentation seit der Veröffentlichung 2.6, so dass Sie sehen werden, dass dies in dem Abschnitt, den Sie für frühere Versionen referenzieren, nicht vorhanden war.
Natürlich ist das reale Limit das 16MB BSON-Limit, da dies die maximale Größe dessen ist, was über die Leitung gesendet werden kann, was tatsächlich eins BSON-Dokument ist. Das wird klarer, wenn Sie feststellen, dass es sich um eine Convenience-API handelt, die über Dinge wie das runCommand-Formular von hinausgeht update , wie dort für "Bulk Updates" gezeigt, oder fügt anderweitig ein, das einfach dieses Formular annehmen kann.
Die Art und Weise, wie ich dies normalerweise als Beispiel aufschreiben würde, würde das Modul der aktuellen Iteration überprüfen, wenn Bulk-Operationen hinzugefügt werden, und nur gelegentlich "ausführen". Nicht die genaue Syntax für den Knotentreiber, aber grundsätzlich:
%Vor%Oder etwas Ähnliches, je nachdem, was Sie tun. Das wäre also wesentlich weniger als die von Ihnen verwendeten Volumes, aber im Wesentlichen in überschaubaren Stücken, die im Netzwerk nicht zu groß sind und sicher unter 16 MB liegen.
Also ist das BSON-Limit das absolute Hard-Limit, aber aus praktischen Gründen und auch wenn Sie vielleicht den Fehlerstatus, den Sie als Antwort in einem großen Dokument erhalten würden, überprüfen möchten, möchten Sie diese wahrscheinlich behalten kleinere Stücke.
Es ist alles besser als eine Operation gleichzeitig, und ich weiß nicht, ob ich wirklich bis zu 16MB über die Leitung gleichzeitig senden und / oder eine 16MB-Antwort auf mögliche Fehler überprüfen möchte.
Tags und Links mongodb