我们可以通过利用mongoose的connect()方法连接到MongoDB 。
mongoose.connect(‘mongodb://localhost/myapp‘);
这是在默认端口(27017)连接到在本地运行的myapp数据库的最低需要。如果本地连接失败那么尝试使用127.0.0.1代替localhost。当本地主机名改变有时会出现问题。
我们也能根据你的环境指定URI中的几个参数。
mongoose.connect(‘mongodb://username:[email protected]:port/database?options...‘);
Options
connect方法还接收一个option对象,该对象将被传递给底层驱动程序。这里的所有选项优先于连接字符串传递的选项。
mongoose.connect(uri, options);
以下是可用的选项键:
db - 传递给collection db实例 server - 传递给collection server实例 repelset - 传递给collection repelset实例 user - 验证用户(如果没有在uri指定) pass - 验证密码(如果没有在uri指定) auth - 认证选项 mogos - 传递给 [underlying driver‘s mongos options](http://mongodb.github.io/node-mongodb-native/2.0/api/Mongos.html)
例子:
var options = { db: { native_parser: true }, server: { poolSize: 5 }, replset: { rs_name: ‘myReplicaSetName‘ }, user: ‘myUserName‘, pass: ‘myPassword‘ } mongoose.connect(uri, options);
注意:server 选项auto_reconnect 默认为true,可以被覆盖。
db选项forceServerObjectId被设置为false,不能被覆盖。
关于可用选项的更多信息见driver
关于keepAlive的说明
对于长时间运行的程序,通常是以毫秒为单位谨慎地使用keepAlive。没有它,在一段时间之后,你可能看到没有理由的 "connection closed" 错误。如果是这样,在阅读这篇文章之后,您可能会决定启用keepAlive。
options.server.socketOptions = options.replset.socketOptions = { keepAlive: 120 }; mongoose.connect(uri, options);
连接副本集
使用同样的方法,而不是通过一个单一的URI连接到一个副本集,但我们通过逗号分隔URI。
mongoose.connect(‘mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]‘ [, options]);
Multi-mongos 支持
在多个Mongos的实例也支持高可用性。给mongos实例传递一个连接字符串并设置mongos选项为true。
mongoose.connect(‘mongodb://mongosA:27501,mongosB:27501‘, { mongos: true }, cb);
多个连接
到目前为止,我们已经看到了如何使用MongoDB的默认连接。有时我们可能需要mongo打开多个连接,每个有不同的读/写设置,或者只是对不同的数据库为例。在这些情况下,我们可以利用mongoose.createConnection()接受已经讨论过的所有参数,并返回一个新的连接。
var conn = mongoose.createConnection(‘mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]‘, options);
连接池
每个连接,无论是用mongoose.connect还是mongoose.createConnection创建都用一个默认大小为5的内置可配置连接池备份。使用的连接选项调节其大小,:
// single server var uri = ‘mongodb://localhost/test‘; mongoose.createConnection(uri, { server: { poolSize: 4 }}); // for a replica set mongoose.createConnection(uri, { replset: { poolSize: 4 }}); // passing the option in the URI works with single or replica sets var uri = ‘mongodb://localhost/test?poolSize=4‘; mongoose.createConnection(uri);