MongoDB 教學課程login
MongoDB 教學課程
作者:php.cn  更新時間:2022-04-21 17:49:03

MongoDB 連接


在本教學我們將討論 MongoDB 的不同連接方式。


啟動MongoDB服務

在前面的教學中,我們已經討論瞭如何啟動MongoDB服務,你只需要在MongoDB安裝目錄的bin目錄下執行'mongod'即可。

執行啟動操作後,mongodb在輸出一些必要資訊後不會輸出任何訊息,之後就等待連線的建立,當連線建立後,就會開始列印日誌訊息。

你可以使用 MongoDB shell 來連接 MongoDB 伺服器。你也可以使用 PHP 來連接 MongoDB。本教學我們會使用 MongoDB shell 來連接 Mongodb 服務,之後的章節我們將會介紹如何透過php 來連接MongoDB服務。



透過shell連接MongoDB服務

你可以執行以下指令來連接MongoDB的服務。

注意:localhost為主機名,這個選項是必須的:

mongodb://localhost

當你執行以上指令時,你可以看到以下輸出結果:

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> mongodb://localhostmongodb://localhost
...

這時候你回傳查看執行./mongod 指令的窗口,可以看到是從哪裡連接到MongoDB的伺服器,您可以看到以下資訊:

……省略信息……
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連接命令格式

使用使用者名稱和密碼連接到MongoDB伺服器,您必須使用'username:password @hostname/dbname' 格式,'username'為使用者名,'password' 為密碼。

使用使用者名稱和密碼連線登陸到預設資料庫:

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
mongodb://admin:123456@localhost/

以上指令中,使用者 admin 使用密碼 123456 連接到本地的 MongoDB 服務上。輸出結果如下所示:<、p>

> mongodb://admin:123456@localhost/
...

使用使用者名稱和密碼連線登陸到指定資料庫:

連線到指定資料庫的格式如下:

mongodb://admin:123456@loc​​alhost/test


#更多連線實例

連線本機資料庫伺服器,連接埠是預設的。

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


參數選項說明

標準格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN] ]][/[database][?options]]

標準的連接格式包含了多個選項(options),如下所示:

選項描述
replicaSet=name驗證replica set的名稱。 Impliesconnect=replicaSet.
slaveOk=true|false
  • true:在connect=direct模式下,驅動程式會連接第一台機器,即使這台伺服器不是主。在connect=replicaSet模式下,驅動器會發送所有的寫入請求到主並且把讀取操作分佈在其他從伺服器。

  • false: 在connect=direct模式下,驅動程式會自動找尋主伺服器. 在connect=replicaSet 模式下,驅動僅連接主伺服器,並且所有的讀寫指令都連接到主伺服器。

safe=true|false
    • true: 在執行更新操作之後,驅動器都會發送getLastError命令來確保更新成功。 (也要參考 wtimeoutMS).

false: 在每次更新之後,驅動程式不會發送getLastError來確保更新成功。
w=n驅動程式新增 { w : n } 到getLastError指令. 套用於safe=true。
wtimeoutMS=ms驅動程式新增{ wtimeout : ms } 到getlasterror 指令. 套用至safe=true.
# fsync=true|false
  • true: 驅動程式新增{ fsync : true } 到getlasterror 指令.套用於safe=true.

false: 驅動程式不會加入到getLastError指令中。
###journal=true|false######如果設定為true, 同步到journal (在提交到資料庫前寫入到實體中). 套用於safe=true############connectTimeoutMS=ms######可以開啟連線的時間。 ############socketTimeoutMS=ms######發送和接受sockets的時間。 ##################

PHP中文網