MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie man Mungo mit einem großen Datensatz füllt

i ist Ihr Index, aus dem Sie Eingabedaten in catalogArray ziehen , aber Sie versuchen damit auch zu verfolgen, wie viele gespeichert wurden, was nicht möglich ist. Versuchen Sie, sie wie folgt separat zu verfolgen:

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

AKTUALISIEREN

Wenn Sie dem Prozess eine strengere Flusskontrolle hinzufügen möchten, können Sie async verwenden forEachLimit des Moduls Funktion, um die Anzahl der ausstehenden save zu begrenzen Operationen auf das, was Sie angeben. Zum Beispiel, um es auf ein ausstehendes save zu beschränken gleichzeitig:

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