MongoDB只存储61246文档?
我对MongoDB相当陌生,并且有一些问题需要通过NodeJs将一些文档插入到我的集合中。
我有一个文件列表(都低于100kb)插入到相同的集合。 我使用以下代码:
var files = walkFolder(base); var url = 'mongodb://localhost:27017/enron'; MongoClient.connect(url, function(err, db) { if (err) { throw err;} var collection = db.collection('emails'); async.each(files, function(item, callback){ var document = readEmail(item); collection.insert(document, function(err, result) { console.log(result); callback(err); }); }); });
walkFolder()
创build一个文件列表, readEmail()
将单个文件parsing成一个JSON对象(只是一些属性,没有embedded的文档或其他东西)
我可以执行我的程序,它运行得非常快。 但总是正好在集合中的61246个文档(通过> db.emails.find().count()
),计数不再增加。
任何想法为什么发生这种情况或如何追踪? 一些版本:MacOS 10.9.5,NodeJs 0.10.31,MongoDB驱动1.4.19,MongoDB 2.6.5
async.each
将您的迭代器函数并行应用于每个files
元素。 如果files
很大,可以通过尝试一次完成所有的资源来耗尽各种资源。 相反,使用async.eachLimit
只能处理N个元素。
例如,要将处理限制为不超过10个正在进行的文件,请将async.each
呼叫replace为:
async.eachLimit(files, 10, function(item, callback){ ...