sql >> データベース >  >> NoSQL >> MongoDB

マングースに大規模なデータセットを取り込む方法

    i catalogArrayで入力データを取得する場所へのインデックスです 、しかし、それを使用して、保存された数を追跡しようとしていますが、これは不可能です。次のように個別に追跡してみてください:

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

    更新

    プロセスに厳密なフロー制御を追加する場合は、asyncを使用できます。 モジュールの forEachLimit 未処理のsaveの数を制限する関数 指定したものに対する操作。たとえば、未処理のsaveを1つに制限します 一度に:

    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. エラーEQUERY[thread1] SyntaxError:無効なプロパティID @(shell)with and / or with find()

    2. crosstab-マングースを使用してデータを保存するためのクエリまたは仮想

    3. 'ObjectId()'ラッパーを含めずにmongo ObjectId .toStringを変換する方法-値だけですか?

    4. Mongoidを使用する代わりにRubyから直接MongoDBをクエリする方法は?