mongoose是否同时允许多个数据库请求?

我读了Mongoose将只能打开一个连接最多每个集合,没有选项来改变这一点。

这是否意味着一个缓慢的mongo查询将使所有后续的查询等待?

我知道node.js中的所有内容都是非阻塞的,但我想知道一个缓慢的查询是否会延迟所有后续查询的执行。 而且是否有办法改变这一点。

它只使用一个连接,如果你使用默认的方法,你做mongoose.connect()。 为了解决这个问题,您可以创build多个连接,然后将指向同一模式的模型绑定到该连接。

像这样:

var conn = mongoose.createConnection('mongodb://localhost/test'); var conn2 = mongoose.createConnection('mongodb://localhost/test'); var model1 = conn.model('Model', Schema); var model2 = conn2.model('Model', Schema); model1.find({long query}, function() { console.log("this will print out last"); }); model2.find({short query}, function() { console.log("this will print out first"); }); 

希望有所帮助。

更新嘿,这是行不通的。 从注释更新,您可以使用createConnection创build连接池。 它可以让你同时从同一个模型执行多个查询:

 var conn = mongoose.createConnection('mongodb://localhost/test', {server:{poolSize:2}}); var model = conn.model('Model', Schema); model.find({long query}, function() { console.log("this will print out last"); }); model.find({short query}, function() { console.log("this will print out first"); }); 

2012年12月2日更新
这个答案现在可能已经有点过时了 – 我注意到我一直在继续上升,所以我想我会更新它。 现在,mongoose包装的mongodb-native驱动程序的默认连接池大小为5,因此您可能不需要在mongoose中明确指定它。