mongodb指南(五) - developer zone - 連接

Mongodb是一個數據庫服務器:它運行在前臺或者後臺,等待來自用戶的連接。當你啓動mongodb,你會看到類似於下面的內容:

~/$ ./mongod
#
# some logging output
#
Tue Mar 9 11:15:43 waiting for connections on port 27017
Tue Mar 9 11:15:43 web admin interface listening on port 28017

此時它會停止打印輸出但是並沒有凍結,它只是監聽在端口27017等待連接。一旦你連接並開始發送命令,它會繼續輸出所作事情的log。你可以使用任何一個mongodb驅動或者mongo shell去連接到數據庫。

你不能通過在網頁瀏覽器上輸入http://localhost:27017來連接到mongodb。數據庫不能在端口27017上面使用HTTP訪問。

 

標準的連接字符串格式

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 必選的前綴,用來標示這是一個標準連接格式的字符串
  • username:password@ 可選的。如果有,驅動在連接到數據庫服務器後會嘗試登錄到一個數據庫。
  • host1 URL的必選部分。它標示了要連接的服務器地址。
  • :portX 是可選的。如果沒有提供默認連接到:27017.
  • /database 要登錄的數據庫的名稱,只有username:password@語法使用後它纔有用。如果沒有提供,默認使用“admin”。
  • ?options 是連接的可選項。注意如果database沒有提供,在最後一個主機和?符號中間依然需要一個斜槓"/"。可選項是名稱=值的配對,他們使用"&"或者";"隔開。

很多主機可能需要指定(連接到複製對/組)。

這些可選項是:

複製組:

  • replicaSet=name
    • 驅動會檢查連接到的複製組和這個名稱是否匹配。意味着如果給出的主機是種子列表,驅動會嘗試找到複製組內所有成員。

 單臺服務器:

  • slaveOk=true|false

任何配置下:

  • safe=true|false
    • true:驅動在執行更新操作後會發送一個getLastError命令確保更新成功(同時查看一下w和wtimeoutMS)。
    • false:驅動在每次更新操作後不會發送getLastError命令。
  • w=n
    • 驅動在getLastError命令中增加{w:n}。意味着safe=true.
  • wtimeoutMS=ms
    • 驅動在getLastError命令中增加{wtimeout:ms}。意味着safe=true.
  • fsync=true|false
    • true:驅動在getLastError命令中增加{fsync:true}。意味着safe=true.
    • false:驅動不在getLastError命令中增加同步參數。
  • journal=true|false
    • 同步到日誌文件。意味着fase=true.
  • connectTimeoutMS=ms
    • 一個連接在超時之前可以保持打開的時間。
  • socketTimeoutMS=ms
    • 套接字上面的發送和接收操作的超時時間。

這些可選項對大小寫不敏感。

一些例子

連接到運行在本機監聽默認端口的數據庫服務器:

mongodb://localhost

使用用戶名“fred”和密碼“foobar”連接並登陸到管理數據庫:

mongodb://fred:foobar@localhost

使用用戶名“fred”和密碼“foobar”連接並登陸到“baz”數據庫:

mongodb://fred:foobar@localhost/baz

連接到一個複製配對,其中一臺服務器在example1.com另一臺服務器在example2.com:

mongodb://example1.com:27017,example2.com:27017

連接到一個複製組,三臺服務器運行在本地(端口爲27017,27018,27019):

mongodb://localhost,localhost:27018,localhost:27019

連接到一個三臺服務器組成的複製組,將所有寫操作發送給主節點,分發所有讀操作到備用節點:

mongodb://host1,host2,host3/?slaveOk=true

使用安全模式連接到本機:

mongodb://localhost/?safe=true

使用安全模式連接到複製組,等待複製操作至少在2臺機器完成,2秒超時:

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

 

連接池
服務器會爲每一個TCP連接啓動一個線程,強烈推薦你的應用程序使用某種類型的連接池。幸運的是,大部分驅動的都爲你實現了這個功能。當你的應用程序爲每個請求啓動一個進程時,驅動會拋出一個重要的異常,比如在CGI和一些PHP的配置中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章