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

Node.js mongoose是否允许同时请求多个数据库?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我了解到Mongoose在每个集合中最多只打开一个连接,并且没有任何选项可以更改 这是否意味着缓慢的mongo查询将使所有后续查询等待 我知道node.js中的所有内容都是非阻塞的,但我想知道一个缓慢的查询是否会延迟所有后续查询的执行。以及是否有办法改变这一点。如果您使用默认方法进行mongoose.connect(),它只使用一个连接。要解决这个问题,可以创建多个连接,然后将指向同一模式的模型绑定到该连接 像这样: var conn = mongoose.createConnection('m

我了解到Mongoose在每个集合中最多只打开一个连接,并且没有任何选项可以更改

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


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

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

像这样:

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创建连接池。它允许您同时从同一模型执行多个查询:

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");
});
更新2-2012年12月

这个答案现在可能有点过时了——我注意到我一直在争取选票,所以我想我会更新它。mongoose包装的mongodb本机驱动程序现在的默认连接池大小为5,因此您可能不需要在mongoose中显式指定它。

我知道它只使用一个连接,但是当我只使用一个连接,并且mongodb查询紧接着另一个沉重的mongodb查询时会发生什么?我提到的第一个查询会等到我提到的第二个查询在mongodb上完成它的工作吗?啊哈,我想你是在告诉我它会等待,因此我应该使用不同的模型。我明白了,谢谢。如果您只使用一个连接进行尝试,他们将按查询的顺序打印。好的,但是Mongoose不应该负责维护连接池以避免此类问题吗?我知道其他一些Mongoose库也这么做,这让我怀疑我是否选择了Mongoose。好吧,制作一个至少有一百万行的测试数据库,然后运行一个查询,在一个非索引字段上排序。反正我就是这么做的。我已经有了我的日志数据(所以我不需要建立一个测试数据库),它有数百万行——对我来说,有问题的查询大约需要30秒。刚刚在网站上发布了一些例子