Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法在monogDB中使用insertMany插入10000条记录_Node.js_Mongodb - Fatal编程技术网

Node.js 无法在monogDB中使用insertMany插入10000条记录

Node.js 无法在monogDB中使用insertMany插入10000条记录,node.js,mongodb,Node.js,Mongodb,所以实际上我制作了一个脚本,在一个文档中插入10000多条记录。因此,我所做的是,首先使用insertMany查询将10000条记录插入到我的集合中。但是当我再次尝试插入相同数量的记录时,它没有被插入到我的文档中。然后我尝试了5000条记录,但这些记录也没有被插入 那么这里的问题是什么?MongoDB对记录有限制吗?请帮我做这个 这是我的剧本: var resultArr=[]; var getUID = function () { return (((1 + Math.r

所以实际上我制作了一个脚本,在一个文档中插入10000多条记录。因此,我所做的是,首先使用insertMany查询将10000条记录插入到我的集合中。但是当我再次尝试插入相同数量的记录时,它没有被插入到我的文档中。然后我尝试了5000条记录,但这些记录也没有被插入

那么这里的问题是什么?MongoDB对记录有限制吗?请帮我做这个

这是我的剧本:

   var resultArr=[];
   var getUID = function () {
     return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
   }
   var date = new Date();    
   date.setDate(date.getDate() + 12);    

   for(var i=0;i<10000;i++){
       resultObj = {
           "guid" : (getUID() + getUID() + "-" + getUID() + "-4" +  getUID().substr(0, 3) + "-" + getUID()),
            title: 'something'
            }
            resultArr.push(resultObj);
            resultObj={};
        }

    db.getCollection('5891847dc654e8e2150b3bff').insertMany(resultArr, function (err, result) {
        print('data saved')
        if (err) {
            deferred.reject(err)
            db.close()
        };   
     });
var resultar=[];
var getUID=函数(){
返回((1+Math.random())*0x10000)| 0.toString(16)子字符串(1);
}
变量日期=新日期();
date.setDate(date.getDate()+12);

对于(var i=0;i使用以下代码:

   var async = require('async');

   var resultArr = [];
   var getUID = function () {
     return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
   }
   var date = new Date();    
   date.setDate(date.getDate() + 12);    

   var count = 0;
   async.whilst(
     // Check to see if we continue
     function() { return count < 10000 },
     // The loop function
     function(callback) {
       count++;
       resultArr.push({
         "guid" : (getUID() + getUID() + "-" + getUID() + "-4" +  getUID().substr(0, 3) + "-" + getUID()),
         "title": "something"
       });
       if ( resultArray.length >= 1000 ) {
         db.getCollection('5891847dc654e8e2150b3bff').bulkWrite(
           resultArray.map(function(d) {
             return { "insertOne": { "document": d } }
           }),
           function(err,res) {
             resultArray = [];
             callback(err);
           }
         );
       } else {
         callback()
       }
     },
     // This is on completion or error
     function(err, n) {
       if (err) throw err;
       if ( resultArray.length > 0 ) {
         db.getCollection('5891847dc654e8e2150b3bff').bulkWrite(
           resultArray.map(function(d) { return {
             "insertOne": { "document": d }
           }),
           function(err,res) {
             resultArray = [];
             db.close();
           }
         );
       } else {
         db.close();
       }
     }
   );
var async=require('async');
var resultar=[];
var getUID=函数(){
返回((1+Math.random())*0x10000)| 0.toString(16)子字符串(1);
}
变量日期=新日期();
date.setDate(date.getDate()+12);
var计数=0;
异步的(
//检查我们是否继续
函数(){返回计数<10000},
//循环函数
函数(回调){
计数++;
结果推({
“guid”:(getUID()+getUID()+“-”+getUID()+“-4”+getUID().substr(0,3)+“-”+getUID()),
“标题”:“某物”
});
如果(resultArray.length>=1000){
db.getCollection('5891847dc654e8e2150b3bff').bulkWrite(
resultArray.map(函数(d){
返回{“insertOne”:{“document”:d}
}),
函数(err、res){
结果射线=[];
回调(err);
}
);
}否则{
回调函数()
}
},
//这是在完成或出错时进行的
函数(err,n){
如果(错误)抛出错误;
如果(resultArray.length>0){
db.getCollection('5891847dc654e8e2150b3bff').bulkWrite(
map(函数(d){return{
“insertOne”:{“document”:d}
}),
函数(err、res){
结果射线=[];
db.close();
}
);
}否则{
db.close();
}
}
);
这将使用内部异步调用上的流控制拆分循环。这将提供要调用的
回调
,以便继续“循环”,从而不会在节点上使用并发运行操作炸毁调用堆栈

当数组中的项目数量达到1000时,实际调用将在循环中进行,这是驱动程序一次发送的最大值。您可以进行更多调用,但我们正在节省内存,这是关于“最佳点”

在这里使用回调,我们清除数组并调用“循环的回调”,以允许循环继续

最后,当“循环”完成时,你会“典型地进行检查,看看在偶数为1000的情况下是否有未处理的内容。在这种情况下,我们知道这是一个整数,但我留下它是为了显示如何处理一个真正的列表


因此,该部分位于
async的最后一个回调参数中。而
在循环完成时满足,我们可以实际退出。

Define“未插入"。这到底是什么意思?它只是默默地失败了,或者你得到了某种错误?不,没有错误。我只能插入100条记录,插入许多后记。你不需要使用底层,甚至可以将其分解为1000个批次。因为底层驱动程序无论如何都会这样做。如果你加载10000个文档ts到内存并尝试运行insert,那么您还有其他问题要处理。无论如何,除非您显示代码,否则我们无法真正解决您的问题。即使这样,也有16MB BSON限制,因为“insert”操作或任何操作实际上是“单个BSON文档”那么你也有这个限制。你需要做一些更聪明的事情,而不是简单地在一堆数据中咕噜咕噜咕噜地输入,然后期望将数据扔向数据库。是的,你是对的。但我甚至不能在插入10000条记录之后再插入1000条记录。