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);
时间: 2024-10-24 00:09:06

mongoose 文档(八) Connections的相关文章

mongoose 文档(四) queries

通过一些model的静态辅助方法可以检索document. 任何 涉及 指定 查询 条件的 model 方法都能通过两个方法执行. 当一个回调函数: 被传递,操作将立即执行,结果传给回调. 没有被传递,返回一个 查询 实例,它提供一个特殊的查询生成接口. 在mongoose 4,Query有 then()函数,因此可以被用来作为一个 promise. 用回调函数执行查询时,将请求指定为JSON 文档.JSON文档的语法和 MongoDB shell 一样. var Person = mongoo

mongoose 文档(二)Models

Models是从 Schema 定义编译的构造函数.这些 model 的实例代表能从数据库存储和检索的 documents.数据库中所有document的创建和检索都是这些model处理的. 1.编译第一个model var schema = new mongoose.Schema({ name: 'string', size: 'string' }); var Tank = mongoose.model('Tank', schema); 第一个参数是 model 对应的 collection

mongoose 文档(七) Population

在mongoose中没有join但有时我们仍然想引用其他collection的document,population由此而来. population是自动将document中指定path替换为其他collection的document的过程.我们能迁移document.多个document.简单对象.多个简单对象或者是查询返回的所有对象. var mongoose = require('mongoose') , Schema = mongoose.Schema var personSchema

mongoose 文档(一) schemas

1.定义shcema 在mongoose里一切都由schema开始.每一个schema对应一个mongoDB collection 并且在那个collection里面定义了documents的模型. var mongoose = require('mongoose'); var Schema = mongoose.Schema; var blogSchema = new Schema({ title: String, author: String, body: String, comments:

mongoose 文档(十) Promises

Built-in Promises Mongoose 异步操作,像 .save() 和 queries,返回 Promises/A+ conformant promises. This means that you can do things like MyModel.findOne({}).then() and yield MyModel.findOne({}).exec() (if you're using co). 这就是说你可以做一些像MyModel.findOne({}).then()

mongoose 文档(九) Plugins

插件 schema是可插入的,即,它们可以应用预包装的能力,从而扩展其功能.这是一个非常强大的功能. 假设我们有几个collection在我们的数据库中,要添加的 last-modified功能给它们.用插件会很容易.只需创建一个插件,并把它应用到每个Schema: // lastMod.js module.exports = exports = function lastModifiedPlugin (schema, options) { schema.add({ lastMod: Date

Mongoose学习参考文档——基础篇

Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性 var PersonModel; //

mongoose学习文档

名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 来自cnode社区 1.创建一个本地数据库并连接: var mongoose = require('mongoose'); //获取mongoose模块 mongoose.connect('mongodb://localhost/nodejs'); //使用mongoose对象的connect方法连接数据库nodejs 2.定义数

Welcome to Swift (苹果官方Swift文档初译与注解二十八)---199~208页(第四章-- 流程控制)

Value Bindings (绑定值) 在switch的case中可以绑定一个或者多个值给case体中的临时常量或者变量,这个成为绑定值. 代码样例: let anotherPoint = (2, 0) switch anotherPoint { case (let x, 0):   println("on the x-axis with an x value of \(x)") case (0, let y):   println("on the y-axis with