MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zapełnić mangusty dużym zestawem danych

i jest twoim indeksem do miejsca, z którego pobierasz dane wejściowe w catalogArray , ale próbujesz również użyć go do śledzenia liczby zapisanych, co nie jest możliwe. Spróbuj śledzić je osobno w ten sposób:

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

AKTUALIZUJ

Jeśli chcesz dodać ściślejszą kontrolę przepływu do procesu, możesz użyć async forEachLimit funkcja ograniczająca liczbę zaległych save operacje na cokolwiek określisz. Na przykład, aby ograniczyć go do jednego zaległego save na raz:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wiosenna paginacja danych mongo

  2. Zapytanie o dokumenty, które posiadają wewnętrzne podpole o danej wartości

  3. jak obliczyć średnią, medianę, min, max w zapytaniu mongodb?

  4. Jak dokładnie dopasować cały dokument?

  5. Nie można utworzyć przestrzeni nazw w transakcji wielodokumentowej (MongoDB 4.0, Spring Data 2.1.0, Spring Boot)