Node.js mongclient批处理
我在尝试使用mongodb本机客户端从mongdb集合中获取10,000行时遇到了问题。 它可以处理大约9700条logging的批处理,但不会返回任何更大批处理大小的数据。 这里是代码片段..任何想法是什么阻止它?
app.get('/aps/allclients' , function(req,res) { MongoClient.connect(url, function(err, db) { var collection = db.collection('allclients'); collection.find({},{"batchSize":10000}).toArray(function(err, docs){ // works for batch size 9700 or less but not 10000 res.send(JSON.stringify(docs)); }); db.close(); }); });
在asynchronoustoArray
完成之前,您正在closures连接。
将db.close()
调用放在callback中:
var collection = db.collection('allclients'); collection.find({}, {"batchSize":10000}).toArray(function(err, docs){ res.send(JSON.stringify(docs)); db.close(); });
也就是说,你不应该在每个请求上打开和closures你的MongoClient
连接池。 只需在应用程序启动时将其打开,并在closures时closures它。