sql >> Database >  >> NoSQL >> MongoDB

Mangoesten vullen met een grote dataset?

i is uw index waar u invoergegevens vandaan haalt in catalogArray , maar je probeert het ook te gebruiken om bij te houden hoeveel er zijn opgeslagen, wat niet mogelijk is. Probeer ze afzonderlijk als volgt te volgen:

var i = 0;
var saved = 0;
Catalog.remove({}, function(err){
    while(i < catalogArray.length){
        new Catalog(JSON.parse(catalogArray[i])).save(function(err, doc){
            saved++;
            if(err){
                console.log(err);
            } else {
                if(saved === catalogArray.length) {
                    return callback('database populated');
                }
            }
        });
        i++;
    }
});

UPDATE

Als u een strakkere stroomregeling aan het proces wilt toevoegen, kunt u de async . gebruiken module's forEachLimit functie om het aantal openstaande save te beperken bewerkingen naar wat u opgeeft. Om het bijvoorbeeld te beperken tot één openstaande save tegelijk:

Catalog.remove({}, function(err){
    async.forEachLimit(catalogArray, 1, function (catalog, cb) {
        new Catalog(JSON.parse(catalog)).save(function (err, doc) {
            if (err) {
                console.log(err);
            }
            cb(err);
        });
    }, function (err) {
        callback('database populated');
    });
}


  1. Gemakkelijke manier om Mongoose-documentversies te verhogen voor eventuele updatequery's?

  2. Initiële gegevens laden bij het opstarten van de toepassing met Spring Data MongoDB

  3. Laatste document verwijderen uit Mongo DB in enkele query

  4. Hoe kan ik reguliere expressies gebruiken met Doctrine's Mongodb ODM?