我們可以通過利用mongoose的connect()方法連接到MongoDB 。
mongoose.connect('mongodb://localhost/myapp');
這是在默認端口(27017)連接到在本地運行的myapp數據庫的最低需要。如果本地連接失敗那么嘗試使用127.0.0.1代替localhost。當本地主機名改變有時會出現問題。
我們也能根據你的環境指定URI中的幾個參數。
mongoose.connect('mongodb://username:password@host: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:password@]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:password@]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);