2
我需要插入MongoDB中的一些矩陣,所以我寫了簡單的下面的代碼MongoDB中不保存所有數據
var MongoClient = require('mongodb').MongoClient;
var matrisMaker = function(d1,d2){
var result = new Array();
for (var i = 0;i < d1;i++){
result.push(new Array());
for (var k = 0;k < d2;k++){
result[i].push(Math.round(Math.random() * 1000000000000));
}
}
return result;
};
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if(err) throw err;
var collection = db.collection('matris');
for (var counter = 0;counter < 10000000;counter++){
var insertObject = {
'matrisA':matrisMaker(20,20),
'matrisB':matrisMaker(20,20),
'resultA':new Object(),
'resultB':new Object()
};
collection.insert(insertObject, function(err, docs) {
if (err)
throw err;
});
delete insertObject;
if ((counter % 1000) == 0)
console.log(counter);
}
db.close();
})
當我看到記錄它打印出的太多記錄插入,像50000,但是當我使用mongodb來記錄記錄數量,它顯示較少,大約有1,000條記錄。
>use test;
>db.matris.count();
問題在哪裏?
+1教導我連接必須在每次操作後關閉,而不是在程序結束前才能發佈我的答案。這可能是相關的:[Node.js代碼加載不一致MongoDB](http://stackoverflow.com/questions/12569830/node-js-code-loading-inconsistently-to-mongodb?rq=1) – havarc
@havarc - - 這不是彼得所建議的。在工作完成之前,您的代碼錯誤地關閉了連接(因爲插入的調用是異步的。 – WiredPrairie