正确的方法连接到(一个池)node-mongodb-native

时间:2016-05-17 03:31:31

标签: node.js mongodb node-mongodb-native

使用MongoDB,建议总是重用相同的数据库连接,并拥有一个连接池来支持一些并发。

node-mongodb-native 1.x中,您可以配置数据库和服务器对象,创建一个如下所示的池:

var server = new Server(
    config.host,
    config.port,
    {
        auto_reconnect  : true,
        poolSize        : 5    // <= here is the pool
    }
);

var db = new Db(
    config.database,
    server
);

db.open(function(err, db) {
    // ...
}

2.0中,他们弃用了MongoClient以外的所有内容进行连接:

MongoClient.connect(URI, callback);

我在哪里添加泳池选项?我现在自动拥有一个游泳池吗?

使用2.1他们更进一步,建议使用生成器:https://mongodb.github.io/node-mongodb-native/2.1/reference/ecmascript6/connecting/

这是否有效地为每个动作再次使用单独的连接?是否使用过时的游泳池?

1 个答案:

答案 0 :(得分:1)

MongoClient.connect使用带In [153]: dict1 = [{'file': '2015a', 'instrument': 'NES', 'gain': '23'}, {'file': '2015b', 'instrument': 'NES', 'gain': 26}, {'file': '2015d', 'instrument': 'NES', 'gain': 25}] In [154]: dict2= [{'file': '2015a', 'instrument': 'NES', 'gain': 3333}, {'file': '2015c', 'instrument': 'PS2', 'gain': 26}, {'file': '2015d', 'instrument': 'NES', 'gain': 4545}] In [155]: for d in dict2: .....: if d.get('instrument') == 'PS2': .....: dict1.append(d) .....: In [156]: dict1 Out[156]: [{'file': '2015a', 'gain': '23', 'instrument': 'NES'}, {'file': '2015b', 'gain': 26, 'instrument': 'NES'}, {'file': '2015d', 'gain': 25, 'instrument': 'NES'}, {'file': '2015c', 'gain': 26, 'instrument': 'PS2'}] 字段的可选options参数,可以设置连接池的大小:

server

如果您不指定,则默认const options = { server: { poolSize: 10 } }; MongoClient.connect(url, options, callback); 为5. poolSize选项记录为here