Node.js 同时插入Mongo是否有限制
我有一个从CSV填充的代码集合。总共有150万个代码,相当多。CSV很容易解析为对象或形式:Node.js 同时插入Mongo是否有限制,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个从CSV填充的代码集合。总共有150万个代码,相当多。CSV很容易解析为对象或形式: codes = [ {code:'abc'}, {code:'123'}, etc ] 我最初试着在一个插页中把它写到Mongo,就像这样 Code.collection.insert(codes) (使用Mongoose直接组合查询) 然而,这一切都悄无声息地失败了。假设存在某种隐藏内存问题,我开始对代码进行分块,发现Mongo2.6(在我的16Gb Macbook上本地运行,没有副
codes = [
{code:'abc'},
{code:'123'},
etc
]
我最初试着在一个插页中把它写到Mongo,就像这样
Code.collection.insert(codes)
(使用Mongoose直接组合查询)
然而,这一切都悄无声息地失败了。假设存在某种隐藏内存问题,我开始对代码进行分块,发现Mongo2.6(在我的16Gb Macbook上本地运行,没有副本集)在一次插入中可以接受大约1000个代码
这是预期的行为吗?如果是,这个数字有什么依据吗?尝试使用插入,特别是您需要方法,该方法可以在Mongoose中使用
Model.collection
访问器对象公开。因此,在上述情况下,您可以重新构造插入以执行批量更新,如下所示:
var bulk = Code.collection.initializeOrderedBulkOp(),
counter = 0;
codes.forEach( function(obj) ) {
bulk.find({'code': {'$ne': null}}/* some search */)
.update({'$set': {'code': obj.code}});
counter++;
if (counter % 1000 == 0) {
bulk.execute(function(err, result) {
bulk = Code.collection.initializeOrderedBulkOp();
});
}
}
if (counter % 1000 != 0 ) {
bulk.execute(function(err, result) {
// get stats
});
}
RTFM很好,但不匹配。报价限额为25万条记录