2017-10-13 12 views
0

ちょっとしたバックグラウンドで、代わりにinsertManyを使用した場合、MongoDBはクラッシュしません。nodejs - 挿入が多すぎるとMongoDBがクラッシュする

var propertiesObject = { results: 5000 }; 

request({url: "https://randomuser.me/api", qs:propertiesObject}, function(err, r, body) { 
    if(err) { console.log(err); return; } 
    console.log("Get response: " + r.statusCode); 

    let j = JSON.parse(r.body) 

    let id = 1 
    let users = j.results 

    for (let user of users) 
    { 
     MongoClient.connect("mongodb://localhost:27017/test", function (err, db) { 
      db.collection('Persons', function (err, collection) { 
       collection.insert({ id, first_name: user.name.first, lastName: user.name.last }) 
      }) 
     }) 
     id++ 
    } 
}); 

これは、MongoDBのがクラッシュし、それの再起動を実行するために私を必要とします。

だから、ここで関連するコードです。それがそれを行う理由がありますか?たとえば小さい値の場合はクラッシュしません。

+1

提案のようにしてみてください:A.Lau @、あなたがシングルショットで大量のデータをインポートするためのMongoDBのmongoimport機能を試してみてください。ここでJSONファイルからデータのリストをインポートするリンク:https://stackoverflow.com/questions/15171622/mongoimport-of-json-file –

答えて

2

10は、この

MongoClient.connect("mongodb://localhost:27017/test", function (err, db) { 
    for (let user of users){ 
     db.collection('persons').insert({ 
     id, first_name: user.name.first, lastName: user.name.last }); 

     id++; 
    } 
    }) 
+0

ああ、私の愚かな方法はもちろん、接続を氾濫させるとそれを壊すだろう。 –

関連する問題