前言
MongoDB Node.js驅動程序是被官方所支持的原生node.js驅動程序,他是至今為止最好的實現, 并且得到了MongoDB官方的支持。MongoDB團隊已經采用MongoDB Node.js驅動程序作為標準方法。
npm install mongodb@1.4.3 // MongoDB Node.js驅動程序npm install mongoose@3.8.8 //mongoose模塊
要從Node.js連接MongoDB數據庫我們有兩種方法可選擇:
1、通過client對象連接到MongoDB
通過實例化一個MongoClient對象連接MongoDB數據庫是最常用也是最佳的方式。
創建MongoClient對象實例的語法:
MongoClient( server, options );
server : 一個serverd對象; 
options : 數據庫連接選項;

如上圖所示,MongoClient連接利用了后臺的Server對象。這個對象的功能就是定義了MongoDB驅動程序怎么連接到服務器。
下面,看一個示例:
var MongoClient = require('mongodb').MongoClient,  Server  = require('mongodb').server;// 創建客戶端連接對象var client = new MongoClient( new Server('localhost', 27017, {           socketOpations: { connectTimeoutMS: 500 },           poolSize: 5,           auto_reconnect: true          }, {           numberOfRetries: 3,           retryMilliSeconds: 500          }));// 打開對服務器端MongoDB數據庫的連接client.open(function(err, client) { if ( err ) {  console.log('連接失敗!'); } else {  var db = client.db('blogdb'); // 建立到數據庫blogdb的連接  if ( db ) {   console.log('連接成功');   db.authenticate('username', 'pwd', function(err, result) { // 對用戶數據庫身份進行驗證    if ( err ) {     console.log('數據庫用戶身份驗證失敗');     client.close(); // 關閉對MongoDB的連接     console.log('連接已關閉......');    } else {     console.log('用戶身份驗證通過');     db.logout(function (err, result) { // 關閉對數據庫的連接,即退出數據庫      if ( !err ) {       console.log('退出數據庫出錯');      }      client.close(); // 關閉對MongoDB的連接      console.log( '已關閉連接......' );     });    }   });  } }});注意: 要注銷數據庫,要使用數據庫對象上的logout()方法。這將關閉到該數據庫上的連接,你不在可以使用Db對象。例如: db.logout();而要關閉到MongoDB的連接,要在客戶端連接上調用close()方法,例如: client.close() 。
寫入關注
首先,我們在連接數據庫的時候會用到一個關于寫入關注級別的問題,說白了,個人理解的話就是相當于出現問題的一個處理優先順序,你可以選擇寫入數據庫之前是否需要你確認之類的,或者發生錯誤是否忽略之類的等等,如下圖:
| 寫 入 級 別 | 說 明 | 
|---|---|
| -1 | 網絡錯誤被忽略 | 
| 0 | 寫確認是不必要的 | 
| 1 | 請求寫確認 | 
| 2 | 寫確認請求跨主服務器和副本集中的一個輔助服務器 | 
| majority | 寫確認是從副本集的主服務器請求的 | 
用來創建MongoClient連接的Server對象的選項,如下:

用來創建MongoClient連接的數據庫連接選項,如下:

2、通過一個連接字符串連接到MongoDB
這種方式要調用MongoClient類的connect( )方法。connect使用語法如下:
MongoClient.connect(connString, options, callback)
connString字符串的語法如下:
mongodb://username:password@host:port/database?opations
MongoClient連接字符串組件:
| 選 項 | 說 明 | 
|---|---|
| mongodb:// | 指定字符串使用mongodb的連接格式 | 
| username | 驗證時使用的用戶名。可選 | 
| password | 身份驗證時使用的密碼。可選 | 
| host | MongoDB服務器主機名或者域名。它可以是多個host:port組合來連接多個MongoDB服務器。 例如:mongodb://host1:270017, host2://270017, host3:270017/testDB | 
| port | 連接MongoDB服務器時使用的端口。默認值是27017 | 
| database | 要連接的數據庫的名字。 默認為admin | 
| options | 連接時所使用的選項的鍵值對。可以在dbOpt和serverOpt參數上指定這些選項 | 
下面,看一個使用連接字符串方法連接MongoDB數據庫的示例:
var MongoClient = require('mongodb').MongoClient;MongoClient.connect('mongodb://mongodb:test@localhost:27017/blogdb', {      db: { w: 1, native_parser: false },      server: {       poolSize: 5,       socketOpations: { connectTimeoutMS: 500 },       auto_reconnect: true      },      replSet: {},      mongos: {}     }, function(err, db) {      if ( err ) {       console.log('連接失敗!');      } else {       console.log('連接成功!');       // 注銷數據庫       db.logout(function(err, result) {        if ( err ) {         console.log('注銷失敗...');        }        db.close(); // 關閉連接        console.log('連接已經關閉!');       });      }});總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。
新聞熱點
疑難解答