Questa è un'affermazione interessante, ed è nuova alla documentazione a partire dalla versione 2.6, quindi vedrete che questo non era presente nella sezione di riferimento per le versioni precedenti.
Ovviamente il limite reale è il limite di 16 MB BSON, in quanto sarebbe la dimensione massima di ciò che può essere inviato sul filo come ciò che è efficacemente un documento BSON. Ciò diventa più chiaro quando ti rendi conto che questa è un'API di conveillance sopra le cose come la forma runCommand di update come mostrato qui per "Bulk Updates", o in altro modo inserimenti che chiaramente possono semplicemente prendere questo modulo.
Il modo in cui di solito scriverei questo come esempio verificherebbe il modululo dell'attuale iterazione quando si aggiungono operazioni bulk e solo "esegui" ogni tanto. Non la sintassi esatta per il driver del nodo, ma in fondo:
var bulk = db.collection.initializeUnorderedBulkOp();
counter = 0;
longArrayOrStream.forEach(function(doc) {
bulk.find({ "_id": doc._id }).update(
{ "$set": { "somefield": doc.somefield }});
counter++;
if (counter % 500 == 0) {
bulk.execute();
counter = 0;
bulk = db.collection.initializeUnorderedBulkOp();
}
});
if (counter > 0)
bulk.execute();
o qualcosa di simile a seconda di cosa si sta facendo. Quindi sarebbe significativamente inferiore rispetto ai volumi che si stanno utilizzando, ma essenzialmente in blocchi gestibili che non sono troppo grandi sulla rete e sono sicuramente al sicuro sotto i 16 MB.
Quindi il limite BSON è il limite assoluto assoluto, ma per motivi pratici e considerando anche che si potrebbe voler verificare lo stato di errore che si riceverà anche in un documento di grandi dimensioni in risposta, è probabile che si desideri mantenere questi in pezzi più piccoli.
È tutto meglio che eseguirlo un'operazione alla volta e non so se desidero davvero inviare fino a 16 MB sul filo in una volta e/o controllare una risposta di 16 MB per possibili errori.
fonte
2014-06-16 07:14:13
La dimensione massima è un documento BSON i cui limiti attuali sono impostati su 16meg, ovvero come comunica MongoDB utilizzando i documenti BSON. – Sammaye