【问题标题】:Does mongoose allow for multiple database requests concurrently?mongoose 是否允许同时处理多个数据库请求?
【发布时间】:2013-01-19 06:35:08
【问题描述】:

我了解到 Mongoose 每个集合最多只能打开一个连接,并且无法更改此设置。

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

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    如果您使用执行 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");
    });
    

    希望对您有所帮助。

    更新 嘿,这确实有效。从 cmets 更新,您可以使用 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-native 驱动程序现在默认连接池大小为 5,因此您可能不需要在 mongoose 中显式指定它。

    【讨论】:

    • 我知道它只使用一个连接,但是当我只使用一个连接并且 mongodb 查询紧跟在另一个繁重的 mongodb 查询之后会发生什么?我提到的第一个查询会等到我提到的第二个查询完成它在 mongodb 上的工作吗?
    • 啊哈,我猜你是在告诉我它会等待,因此我应该使用不同的模型。我明白了,谢谢。
    • 是的。如果您只尝试一个连接,它们将按查询的顺序打印。
    • 好的,但是Mongoose不应该负责维护一个连接池以避免此类问题吗?我知道其他一些 Mongoose 库会这样做,这让我想知道我是否为 Mongoose 做出了一个好的选择。
    • 好吧,创建一个至少有一百万行的测试数据库,然后运行一个对非索引字段进行排序的查询。反正我就是这么做的。我已经在那里有了我的日志数据(所以我不需要创建一个测试数据库),它有数百万行——有问题的查询对我来说大约需要 30 秒。刚刚在wes.skeweredrook.com/testing-with-mongodb-part-1 上发布了一些示例
    猜你喜欢
    • 2021-08-04
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2013-10-18
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多