MongoDB連接標准格式:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
參數說明
Mongodb:// |
必填的前綴,標識當前字符串為便准鏈接格式 |
username:password@ |
可選項,給出用戶名和密碼后,在連接數據庫服務器后,驅動都會嘗試登陸這個數據庫 |
host |
uri里唯一的必填項,數據庫的連接地址,人如果需要連接副本集,需要制定多個主機地址 |
:port |
可選項,如果不填則默認為27017端口 |
/database |
希望連接到的數據庫名稱,只要在設置username:password@后才會有效,如果不指定,則默認為admin數據庫 |
?options |
可選項,如果不適用/database,則需要在前面加上/。所有連接選項都是鍵值對name=value格式,鍵值對之間使用&或;(分號)分割 |
options參數說明
connect=direct|replicaset |
direct: 直接建立一個到服務器的連接。如果指定了多個host,將按先后順序挨個嘗試建立連接,直到連接建立成功為止。如果只指定了一個host,則 direct 為默認值。 replicaset: 使用creplica set semantics建立連接(即使只提供了一個host)。指定的host作為種子列表來查找完整的replica set。當指定多個host時 replicaset 為默認值。 |
replicaset=name |
驅動驗證建立連接的replica set的名字。應用於 connect=replicaset。 |
slaveok=true|false |
true: 對於 connect=direct 模式,驅動對列表中的第一個服務器建立連接,即使它不是主服務器。對 connect=replicaset 模式,驅動將所有寫操作發送到主節點,將所有讀操作按round robin順序分發到從節點。 false: 對 connect=direct 模式,驅動按順序嘗試所有host直到找到主節點。對 connect=replicaset 模式,驅動將只連接到主節點,並將所有讀操作和寫操作都發送到主節點。 |
safe=true|false |
true: 驅動在每次更新操作后都發送 getlasterror 命令以確保更新成功(參考 w 和 wtimeout)。 false: 驅動每次更新操作后不發送 getlasterror 命令。 |
w=n |
w:代表server的數量:。 w=0 不等待,只返回網絡錯誤 w=1 檢查本機,並檢查網絡錯誤 w>1 檢查w個server,並返回網絡錯誤 應用於safe=true |
wtimeoutMS=ms |
寫操作超時的時間,應用於 safe=true. |
fsync=true|false |
是不是等待刷新數據到磁盤,應用於safe=true |
journal=true|false |
是不是等待提交的數據已經寫入到日志,並刷新到磁盤,應用於safe=true |
maxPoolSize=n minPoolSize=n |
一些驅動會把沒用的連接關閉。 然而,如果連接數低於minPoolSize值之下, 它們不會關閉空閑的連接。注意:連接會按照需要進行創建,因此當連接池被許多連接預填充的時候,minPoolSize不會生效。 |
waitQueueTimeoutMS=ms |
在超時之前,線程等待連接生效的總時間。如果連接池到達最大並且所有的連接都在使用,這個參數就生效了。 |
waitQueueMultiple=n |
驅動強行限制線程同時等待連接的個數。 這個限制了連接池的倍數。 |
connectTimeoutMS=ms |
可以打開連接的時間。 |
socketTimeoutMS=ms |
發送和接受sockets的時間 |
ReadPreference |
primary 主節點,默認模式,讀操作只在主節點,如果主節點不可用,報錯或者拋出異常。 primaryPreferred 首選主節點,大多情況下讀操作在主節點,如果主節點不可用,如故障轉移,讀操作在從節點。 secondary 從節點,讀操作只在從節點, 如果從節點不可用,報錯或者拋出異常。 secondaryPreferred 首選從節點,大多情況下讀操作在從節點,特殊情況(如單主節點架構)讀操作在主節點。 nearest 最鄰近節點,讀操作在最鄰近的成員,可能是主節點或者從節點 |
參考示例:
連接本地數據庫服務器,端口是默認的。
mongodb://localhost |
使用用戶名fred,密碼foobar登錄localhost的admin數據庫。
mongodb://fred:foobar@localhost |
使用用戶名fred,密碼foobar登錄localhost的baz數據庫。
mongodb://fred:foobar@localhost/baz |
連接 replica pair, 服務器1為example1.com服務器2為example2。
mongodb://example1.com:27017,example2.com:27017 |
連接 replica set 三台服務器 (端口 27017, 27018, 和27019):
mongodb://localhost,localhost:27018,localhost:27019 |
連接 replica set 三台服務器, 寫入操作應用在主服務器 並且分布查詢到從服務器。
mongodb://host1,host2,host3/?slaveOk=true |
直接連接第一個服務器,無論是replica set一部分或者主服務器或者從服務器。
mongodb://host1,host2,host3/?connect=direct;slaveOk=true |
當你的連接服務器有優先級,還需要列出所有服務器,你可以使用上述連接方式。
安全模式連接到localhost:
mongodb://localhost/?safe=true |
以安全模式連接到replica set,並且等待至少兩個復制服務器成功寫入,超時時間設置為2秒。
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000 |
