单个或多个连接到MongoDB更好?

我正在通过Express构build我的Node.js应用程序。 我有两个select来编写代码,以连接到我的MongoDB。

  • 首先是每次执行查询时打开一个连接

https://codeshare.io/a3AQXg

  • 其次是启动应用程序时创build一个单一的连接

https://codeshare.io/GkmR14

然后

function productRepository(db) { this.db = db; }; productRepository.prototype.insert = function(item) { return new Promise((resolve, reject) => { this.db.collection('product').insertOne(item, function(err, result) { if (err) { reject(err); } else { resolve(result); } }); }); }; module.exports = productRepository; 

 module.exports = function(app, db) { var productRepository = require('../model/product'); var productRepoInstance = new productRepository(db); app.get('/test', function(req, res) { productRepoInstance.insert({ createdAt: new Date() }).then( (result) => res.send({ result: 1 }), (error) => { console.log(error); res.send({ result: 0 }); }); }); }; 

我不知道哪个更好,为什么?

您绝对应该使用多个连接,否则一次只能执行一个查询。 最简单的方法是在创buildDb对象时简单地在您的mongodb.Server对象上启用连接池。 例如:

 var serverOptions = { 'auto_reconnect': true, 'poolSize': 5 }; var mohammadsMongoServer = new mongodb.Db('test', new mongodb.Server('127.0.0.1', 27017, serverOptions)); mohammadsMongoServer.open(function (err, mdb) {} 

目前默认情况下,mongodb的连接池大小为5,但可以使用上面的示例代码来增加。 我build议您使用连接池来创build新的单个连接,因为它具有单个连接的所有优点,但通过重新使用连接显着减less了开销。