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

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

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

推荐答案

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

就像这样:

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");
});

希望有帮助.

Update

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");
});

Update 2 -- Dec 2012

Mongodb相关问答推荐

如何将空值单独分组?

如何在Golang保存到MongoDB时排除空数据值的问题?

Spring数据MongoDB(聚合)

Mongo:投影不影响布尔值

如何在 Mongoose 中定义一个通用的嵌套对象

更新 mongodb 文档中的特定字段

SELECT 字段 AS `anothername` 的 mongodb 等效项

MongoDB .NET 未在 upsert 上生成 _id

加载时将 mongo 存储的日期转换回自 Unix 纪元以来的毫秒数?

mongo php副本连接非常慢

Spring Mongodb @DBREF

为什么不建议在 MongoDB 中使用服务器端存储函数?

TypeError: object of type 'Cursor' has no len()

MongoDB - Permission denied for socket: /tmp/mongodb-27017.sock

MongoDB MapReduce - 发出一个键/一个值不调用reduce

MongoDb 聚合 $match 错误:Arguments must be aggregate pipeline operators

未找到 MongoDB 数据/数据库

mongodb安装失败运行mongod

我可以只获取 Cursor 对象(pymongo)中的第一项吗?

我可以使用字符串作为 mongodb 文档的 ID 类型吗?