sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man befolkar mangust med en stor datamängd

i är ditt index dit du hämtar indata från i catalogArray , men du försöker också använda den för att hålla reda på hur många som har sparats, vilket inte är möjligt. Försök att spåra dem separat så här:

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++;
    }
});

UPPDATERA

Om du vill lägga till stramare flödeskontroll till processen kan du använda async modulens forEachLimit funktion för att begränsa antalet utestående save operationer till vad du än anger. Till exempel för att begränsa det till en utestående save åt gången:

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. fråga i mongo Shell ger SyntaxError:missing :after property

  2. Ta bort objekt från kapslad array enligt flera kriterier

  3. Benchmarking MongoDB - Driving NoSQL Performance

  4. Vad är syntaxen för Dates i MongoDB som körs på MongoLab?