MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách điền mongoose với một tập dữ liệu lớn

i là chỉ mục của bạn đến nơi bạn lấy dữ liệu đầu vào trong catalogArray , nhưng bạn cũng đang cố gắng sử dụng nó để theo dõi số lượng đã được lưu mà điều này không thể thực hiện được. Hãy thử theo dõi chúng một cách riêng biệt như sau:

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

CẬP NHẬT

Nếu bạn muốn thêm kiểm soát luồng chặt chẽ hơn vào quy trình, bạn có thể sử dụng async của mô-đun forEachLimit chức năng giới hạn số lượng save chưa thanh toán hoạt động đối với bất cứ điều gì bạn chỉ định. Ví dụ:để giới hạn nó ở một save chưa thanh toán tại một thời điểm:

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. Cách truy vấn MongoDB với like

  2. Vercel tạo kết nối DB mới cho mọi yêu cầu

  3. Kết thúc bất ngờ của đầu vào JSON với MongoDB Compass

  4. Lỗi Mongo-go-driver Lỗi máy khách mới ClientOptions trong đối số với mongo.NewClient

  5. Cách xếp hạng mục trong danh sách được sắp xếp theo nhiều trường trong Mongoose