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 |
|
journal=true|false | 如果設置爲 true, 同步到 journal (在提交到數據庫前寫入到實體中). 應用於 safe=true |
connectTimeoutMS=ms | 可以打開連接的時間。 |
socketTimeoutMS=ms | 發送和接受sockets的時間。 |