在本教程我們將討論MongoDB的不同連接方式。
在前面的教程中,我們已經(jīng)討論了如何啟動MongoDB服務(wù),你只需要在MongoDB安裝目錄的bin目錄下執(zhí)行'mongod'即可。
執(zhí)行啟動操作后,mongodb在輸出一些必要信息后不會輸出任何信息,之后就等待連接的建立,當(dāng)連接被建立后,就會開始打印日志信息。
你可以使用MongoDB shell 來連接 MongoDB 服務(wù)器。你也可以使用PHP來連接mongodb。本教程我們會使用 MongoDB shell來連接Mongodb服務(wù),之后的章節(jié)我們將會介紹如何通過php 來連接MongoDB服務(wù)。
默認(rèn)情況下,MongoDB的啟動端口為27017。比MongoDB啟動端口大1000的端口為MongoDB的web用戶界面,你可以在瀏覽器中輸入http://localhost:28017 來訪問MongoDB的web用戶界面。
你可以通過執(zhí)行以下命令來連接MongoDB的服務(wù)。
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
標(biāo)準(zhǔn)的連接格式包含了多個選項(options),如下所示:
選項 | 描述 |
---|---|
replicaSet=name | 驗證replica set的名稱。 Impliesconnect=replicaSet. |
slaveOk=true|false |
|
safe=true|false |
|
w=n | 驅(qū)動添加 { w : n } 到getLastError命令. 應(yīng)用于safe=true。 |
wtimeoutMS=ms | 驅(qū)動添加 { wtimeout : ms } 到 getlasterror 命令. 應(yīng)用于 safe=true. |
fsync=true|false |
|
journal=true|false | 如果設(shè)置wie true, 同步到 journal (在提交到數(shù)據(jù)庫前寫入到實體中). 應(yīng)用于 safe=true |
connectTimeoutMS=ms | 可以打開連接的時間。 |
socketTimeoutMS=ms | 發(fā)送和接受sockets的時間。 |
使用默認(rèn)端口來連接 MongoDB 的服務(wù)。
mongodb://localhost
通過 shell 連接 MongoDB 服務(wù):
$ ./mongo
MongoDB shell version: 4.0.9
connecting to: test
...
這時候你返回查看運行 ./mongod 命令的窗口,可以看到是從哪里連接到MongoDB的服務(wù)器,您可以看到如下信息:
……省略信息……
2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] allocator: tcmalloc
2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "/data/db" } }
2015-09-25T17:22:27.350+0800 I NETWORK [initandlisten] waiting for connections on port 27017
2015-09-25T17:22:36.012+0800 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open) # 該行表明一個來自本機的連接
……省略信息……
使用用戶名和密碼連接到 MongoDB 服務(wù)器,你必須使用 'username:password@hostname/dbname' 格式,'username'為用戶名,'password' 為密碼。
使用用戶名和密碼連接登錄到默認(rèn)數(shù)據(jù)庫:
$ ./mongo
MongoDB shell version: 4.0.9
connecting to: test
使用用戶 admin 使用密碼 123456 連接到本地的 MongoDB 服務(wù)上。輸出結(jié)果如下所示:
> mongodb://admin:123456@localhost/
...
使用用戶名和密碼連接登錄到指定數(shù)據(jù)庫,格式如下:
mongodb://admin:123456@localhost/test
連接本地數(shù)據(jù)庫服務(wù)器,端口是默認(rèn)的。
mongodb://localhost
使用用戶名admin,密碼123456登錄localhost的admin數(shù)據(jù)庫。
mongodb://admin:123456@localhost
使用用戶名admin,密碼123456登錄localhost的w3cschool數(shù)據(jù)庫。
mongodb://admin:123456@localhost/w3cschool
連接兩個 replica pair的服務(wù)器, 服務(wù)器1為example1.com服務(wù)器2為example2.com。
當(dāng)使用兩個數(shù)據(jù)庫,其中一個作為備份數(shù)據(jù)庫時,需要一個復(fù)制機制來實現(xiàn)讀寫分離方案和節(jié)點(數(shù)據(jù)庫)同步,replica pair則是MongoDB的一種復(fù)制機制。
mongodb://example1.com:27017,example2.com:27017
連接三臺replica set 的服務(wù)器 (端口 27017, 27018, 和27019):
與replica pair類似,replica set也是一種復(fù)制機制,而且可以算是replica pair的進(jìn)階版,因為replica pair只能在兩個節(jié)點間同步,而replica set解決了這個問題。
mongodb://localhost,localhost:27018,localhost:27019
連接三臺 replica set 的服務(wù)器, 寫入操作應(yīng)用在主服務(wù)器 并且分布查詢到從服務(wù)器。
mongodb://host1,host2,host3/?slaveOk=true
直接連接第一個服務(wù)器,無論是replica set一部分或者主服務(wù)器或者從服務(wù)器。
mongodb://host1,host2,host3/?connect=direct;slaveOk=true
當(dāng)你的連接服務(wù)器有優(yōu)先級,還需要列出所有服務(wù)器,你可以使用上述連接方式。
安全模式連接到localhost:
mongodb://localhost/?safe=true
以安全模式連接到replica set,并且等待至少兩個復(fù)制服務(wù)器成功寫入,超時時間設(shè)置為2秒。
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
更多建議: