mongoose 文档 Connections

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongoose 文档 Connections相关的知识,希望对你有一定的参考价值。

我们可以通过利用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...‘);

详细看MongoDB连接字符串格式

 

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);

 

以上是关于mongoose 文档 Connections的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 子文档不会更新

MongoDB - 查询难题 - 文档参考或子文档

MongoDB - 查询难题 - 文档参考或子文档

猫鼬关闭连接

mysql服务器参数

使用 ObjectId 以外的 SchemaTypes 来表示人口(Mongoose)