node.js - MongoDB 中集合级别的数据库池?

标签 node.js database mongodb express

我使用 NodeJS 在 MongoDB 中使用数据库池,而不是在每个请求上创建单独的客户端对象。连接池甚至在集合级别也能工作(如果集合在路由之间共享),还是必须通过数据库客户端对象访问集合才能使连接池工作?

例如,考虑以下代码(dbURL 不包含数据库名称):

        const dbURL = 'mongodb://127.0.0.1:27017'
        const client = new MongoClient(dbURL, {
            poolSize: 100
        });

        client.connect((err, db)=>{
            if (err) {
                console.log('ERROR in database connection!');
                reject();
                return;
            }
            const userCollection = db.db('mydb').collection('users);
            //userCollection is shared between routes
        });

如果 userCollection 在各个路由之间共享,数据库池仍然有效吗?或者它只在客户端级别工作(我的代码中名为 db 的对象)?它也可以在数据库级别工作( db.db('mydb') - 返回实际数据库)吗?

换句话说,连接池的工作级别是什么?

a.客户端对象级别

b.数据库级别

c.收藏级别

最佳答案

您问题的答案是a。客户端对象

想象一下您要去商店。拥有客户端对象就像已经在商店一样。切换数据库和集合类似于选择购买哪个。您已经在商店了,所以选择要买的东西是免费的。

<小时/>

这里是docs说,只要你调用 MongoClient.connect 一次,你基本上就已经池化了数据库连接。 mongodb 驱动程序处理其余的复杂性。

关于node.js - MongoDB 中集合级别的数据库池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61939753/

相关文章:

mongodb - Reactivemongo 将 map 序列化为 BSONDocument

javascript - Node.js GET 请求 ETIMEDOUT & ESOCKETTIMEDOUT

node.js - Node redis访客计数器-抛出错误

node.js - 两个日期之间的天数 - typescript

php - 使用数据库而不是配置文件来存储配置

mysql - 不停机优化MySql 5.7表

mongodb - 使用 MongoDB 检查 Golang 中对象数组中的重复项

node.js - MongoDB/ Mongoose :Getting incorrect distance with geoNear method using geoJSON

node.js - Nodejs promise 所有内容均未按预期运行

mysql - 使用 drupal 设置关系数据库