MongoDB: Insert en vrac (Bulk.insert) vs insert multiple (insert ([...]))
Quelle est la différence entre un bulk insert vs insertion de plusieurs documents?
var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } );
bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } );
bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } );
bulk.execute();
VS
db.collection.insert(
<document or array of documents>
)
Est là l'un des thats plus vite?
source d'informationauteur Jiew Meng
Vous devez vous connecter pour publier un commentaire.
@Mannequin est exact que la plupart des opérations sont généralement plus rapides que les différents inserts, cependant, à partir de la version 2.6 et au-dessus, en insérant plusieurs documents à l'aide de
collection.insert
est juste sucre syntaxique pour unBulkWrite
. Si vous définissez laordered
drapeau à false, la performance devrait être identique à celui d'un non-ordonnée bulk insert:Cette opération sera de retour d'une
BulkWriteResult
voir plus de détails dans la la documentation.Oui, il ya une différence. Avec en vrac ops (toujours), il vous suffit d'aller dans la base de données une fois et vous effectuer l'opération sur les lots de documents, puis vous revenez à l'application. Avec chacun des inserts, vous aurez besoin d'aller à la base de données, ne le cache, puis revenir à l'application, et vous répétez ce processus pour chaque opération d'insertion de vous dire la base de données à effectuer. Les inserts sont très lents par rapport à la majeure partie des opérations. C'est comme faire l'épicerie, si vous avez tout ce dont vous avez besoin pour acheter répertorié, vous pouvez les acheter tous en un seul voyage (bulk insert), mais si, pour chaque élément, vous avez besoin de conduire pour le magasin pour le faire, et puis en voiture à la maison, puis route de retour à la boutique pour en acheter un autre élément, alors il n'est pas très efficace (comme les inserts)
Remarque: Même si, lors de l'interaction avec MongoDB l'utilisation de la coque, vous n'aurez à faire qu'avec un
insert
fonction pour de gros inserts, vous devriez faire une distinction entreinsertOne()
etinsertMany()
opérations lors de l'utilisation de MongoDB pilote Api. Et vous ne devriez jamais appelinsertOne()
l'intérieur d'une boucle (raison: voir mes courses analogie ci-dessus).