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){ ...