MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Inserimento di un grande array di oggetti in mongodb da nodejs

È possibile utilizzare inserti in blocco.

Esistono due tipi di operazioni in blocco:

  1. Operazioni in blocco ordinate. Queste operazioni eseguono tutte le operazioni in ordine ed escono dal primo errore di scrittura.
  2. Operazioni in blocco non ordinate. Queste operazioni eseguono tutte le operazioni in parallelo e aggregano tutti gli errori. Le operazioni di massa non ordinate non garantiscono l'ordine di esecuzione.

Quindi puoi fare qualcosa del genere:

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://myserver:27017/test", function(err, db) {
    // Get the collection
    var col = db.collection('myColl');

    // Initialize the Ordered Batch
    // You can use initializeUnorderedBulkOp to initialize Unordered Batch
    var batch = col.initializeOrderedBulkOp();

    for (var i = 0; i < sizeOfResult; ++i) {
      var newKey = {
          field_1: result[i][1],
          field_2: result[i][2],
          field_3: result[i][3]
      };
      batch.insert(newKey);
    }

    // Execute the operations
    batch.execute(function(err, result) {
      console.dir(err);
      console.dir(result);
      db.close();
    });
});