【发布时间】:2015-08-17 11:28:10
【问题描述】:
我必须使用 nodejs 在 mongodb 中插入大约 10,00000 个文档。
我使用 for 循环生成这些文档,然后将它们存储到数组中,然后最终将它们插入 mongodb。
var codeArray = new Array();
for (var i = 0; i<1000000; i++){
var token = strNpm.generate();
var now = moment().format('YYYYMMDD hhmmss');
var doc1 = {id:token,
Discount_strId:"pending",
Promotion_strCode:token,
Promotion_strStatus:"I",
Promotion_dtmGeneratedDate:now,
User_strLogin:"test",
Promotion_strMode:"S",
Promotion_dtmValidFrom:"pending",
Promotion_dtmValidTill:"pending",
LastModified_dtmStamp:now
};
codeArray.push(doc1);
db.collection('ClPromoCodeMaster').insert(codeArray, function (err, result) {
if (err){
console.log(err);
}else{
console.log('Inserted Records - ', result.ops.length);
}
});
我面临的问题是 mongo 的插入限制为 16mb,所以我不能一次插入整个数组。 请提出最优化的解决方案。
【问题讨论】:
-
16 MB 是文档大小限制,我不认为你可以一次性插入多少。
-
是的!但是我的数组已经超过了 16 MB 的限制。所以无法将其插入数据库。
-
不推荐使用
insert...文档建议改用insertOne和insertMany。尝试使用insertMany? mongodb.github.io/node-mongodb-native/2.0/api/… -
@PrashanthChandra 仍然是相同的限制。发送的“请求”仍然需要低于 BSON 16MB 限制。这里的关键是不要一次发送所有内容,并且也要尊重回调。
-
@PrashanthChandra 是的。一切都是 BSON,无论是“在线”还是“存储”。
标签: node.js mongodb mongodb-query