MongoDb批量插入限制问题
我新与蒙戈和节点。 我正试图上传一个csv到MongoDB中。
步骤包括:
- 读csv。
- 将其转换成JSON。
- 把它推向MongoDB。
我使用'csvtojson'模块将csv转换为json并使用代码推送它:
MongoClient.connect('mongodb://127.0.0.1/test', function (err, db) { //connect to mongodb var collection = db.collection('qr'); collection.insert(jsonObj.csvRows, function (err, result) { console.log(JSON.stringify(result)); console.log(JSON.stringify(err)); }); console.log("successfully connected to the database"); //db.close(); });
此代码工作正常与csv高达4MB大小; 不仅如此,它不工作。
我试图安慰错误
console.log(JSON.stringify(err));
它返回{}
注意:我的系统是32位的。
是否因为32位系统的文件限制为4MB?
我在一个场景中,我不能限制csv文件的大小和no.of属性(即代码将处理各种csv文件)。 那么如何处理呢? 我有没有可用的模块?
如果你没有把csvparsing成JSON的问题,那么你可能只是限制被传入的列表大小。
正如我所看到的, .csvRows
元素是一个数组,所以不是一次发送所有元素,而是将其分割并批量调用插入元素。 元素的数量似乎可能是问题的原因,而不是规模。 将arrays分成几个插入而不是1应该有帮助。
尝试500,然后1000,直到你find一个快乐的媒介。
它的编码它:
var batchSize = 500; for (var i=0; i<jsonObj.csvRows.length; i += batchSize) { var docs = jsonObj.csvRows.slice(i, i+(batchSize -1)); db.collection.insert( docs, function(err, result) { // Also don't JSON covert a *string* console.log(err); // Whatever } }
像这样chunks
做。
您可以将这些数据作为元素数组,然后只需使用MongoDB插入函数,将该数组传递给插入函数