MongoDb批量插入限制问题

我新与蒙戈和节点。 我正试图上传一个csv到MongoDB中。

步骤包括:

  1. 读csv。
  2. 将其转换成JSON。
  3. 把它推向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插入函数,将该数组传递给插入函数