MongoDB 連接
在本教學我們將討論 MongoDB 的不同連接方式。
啟動MongoDB服務
在前面的教學中,我們已經討論瞭如何啟動MongoDB服務,你只需要在MongoDB安裝目錄的bin目錄下執行'mongod'即可。
執行啟動操作後,mongodb在輸出一些必要資訊後不會輸出任何訊息,之後就等待連線的建立,當連線建立後,就會開始列印日誌訊息。
你可以使用 MongoDB shell 來連接 MongoDB 伺服器。你也可以使用 PHP 來連接 MongoDB。本教學我們會使用 MongoDB shell 來連接 Mongodb 服務,之後的章節我們將會介紹如何透過php 來連接MongoDB服務。
透過shell連接MongoDB服務
你可以執行以下指令來連接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/ ...
使用使用者名稱和密碼連線登陸到指定資料庫:
連線到指定資料庫的格式如下:
#更多連線實例
連線本機資料庫伺服器,連接埠是預設的。
使用使用者名稱fred,密碼foobar登入localhost的admin資料庫。
#使用使用者名稱fred,密碼foobar登入localhost的baz資料庫。
連接 replica pair, 伺服器1為example1.com伺服器2為example2。
連接replica set 三台伺服器(連接埠27017, 27018, 和27019):
連接replica set 三台伺服器, 寫入作業應用在主伺服器並且分佈查詢到從伺服器。
直接連接第一個伺服器,無論是replica set一部份或主伺服器或從伺服器。
當你的連線伺服器有優先權,還需要列出所有伺服器,你可以使用上述連接方式。
安全模式連接到localhost:
以安全模式連接到replica set,並且等待至少兩個複製伺服器成功寫入,逾時時間設定為2秒。
參數選項說明
標準格式:
標準的連接格式包含了多個選項(options),如下所示:
選項 | 描述 |
---|---|
replicaSet=name | 驗證replica set的名稱。 Impliesconnect=replicaSet. |
slaveOk=true|false |
|
safe=true|false |
|
w=n | 驅動程式新增 { w : n } 到getLastError指令. 套用於safe=true。 |
wtimeoutMS=ms | 驅動程式新增{ wtimeout : ms } 到getlasterror 指令. 套用至safe=true. |
# fsync=true|false |
|
false: 驅動程式不會加入到getLastError指令中。 |