# MongoDB - 連接
## 描述
在本教程我們將討論MongoDB的不同連接方式。
## 啟動 MongoDB服務
在前面的教程中,我們已經討論[了如何啟動MongoDB服](mongodb-window-install.html)務,你只需要在MongoDB安裝目錄的bin目錄下執行'mongod'即可。
執行啟動操作后,mongodb在輸出一些必要信息后不會輸出任何信息,之后就等待連接的建立,當連接被建立后,就會開始打印日志信息。
你可以使用MongoDB shell 來連接 MongoDB 服務器。你也可以使用PHP來連接mongodb。本教程我們會使用 MongoDB shell來連接Mongodb服務,之后的章節我們將會介紹如何通過php 來連接MongoDB服務。
默認情況下,MongoDB的啟動端口為27017。比MongoDB啟動端口大1000的端口為MongoDB的web用戶界面,你可以再瀏覽器中輸入 http://localhost:28017 來訪問MongoDB的web用戶界面。
## 通過shell連接MongoDB服務
你可以通過執行以下命令來連接MongoDB的服務。
**注意:**localhost為主機名,這個選項是必須的:
```
mongodb://localhost
```
當你執行以上命令時,你可以看到以下輸出結果:

如果你檢查從哪里連接到MongoDB的服務器,您可以看到如下信息:

最后一行(標記處),打印了你成功連接上MongoDB服務的信息。
## MongoDB連接命令格式
使用用戶名和密碼連接到MongoDB服務器,你必須使用 'username:password@hostname/dbname' 格式,'username'為用戶名,'password' 為密碼。
使用用戶名和密碼連接登陸到默認數據庫:
```
mongodb://mongo_admin:AxB6_w3r@localhost/
```
以上命令中,用戶 mongo_admin使用密碼AxB6_w3r連接到本地的MongoDB服務上。輸出結果如下所示:

使用用戶名和密碼連接登陸到指定數據庫:
連接到指定數據庫的格式如下:
```
mongodb://mongo_admin:AxB6_w3r@localhost/w3r
```
## 更多連接實例
連接本地數據庫服務器,端口是默認的。
```
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|ffalse | true: 在執行更新操作之后,驅動都會發送getLastError命令來確保更新成功。(還要參考 wtimeoutMS). false: 在每次更新之后,驅動不會發送getLastError來確保更新成功。 |
| w=n | 驅動添加 { w : n } 到getLastError命令. 應用于safe=true。 |
| wtimeoutMS=ms | 驅動添加 { wtimeout : ms } 到 getlasterror 命令. 應用于 safe=true. |
| fsync=true|ffalse | true: 驅動添加 { fsync : true } 到 getlasterror 命令.應用于 safe=true. false: 驅動不會添加到getLastError命令中。 |
| journal=true|ffalse | 如果設置wie true, 同步到 journal (在提交到數據庫前寫入到實體中). 應用于 safe=true |
| connectTimeoutMS=ms | 可以打開連接的時間。 |
| socketTimeoutMS=ms | 發送和接受sockets的時間。 |
- NoSQL 簡介
- 什么是MongoDB ?
- window平臺安裝 MongoDB
- Linux平臺安裝MongoDB
- MongoDB 數據庫,對象,集合
- MongoDB - 連接
- PHP安裝MongoDB擴展驅動
- MongoDB 數據插入
- MongoDB使用update()函數更新數據
- MongoDB使用- remove()函數刪除數據
- MongoDB 查詢
- MongoDB條件操作符
- MongoDB條件操作符 - $type
- MongoDB Limit與Skip方法
- MongoDB 排序
- MongoDB 索引
- MongoDB 聚合
- MongoDB 復制(副本集)
- MongoDB 分片
- MongoDB 備份(mongodump)與恢復(mongorerstore)
- MongoDB 監控
- MongoDB Java
- MongoDB PHP
- MongoDB 關系
- MongoDB 數據庫引用
- MongoDB 覆蓋索引查詢
- MongoDB 查詢分析
- MongoDB 原子操作
- MongoDB 高級索引
- MongoDB 索引限制
- MongoDB ObjectId
- MongoDB Map Reduce
- MongoDB 全文檢索
- MongoDB 正則表達式
- MongoDB 管理工具: Rockmongo
- MongoDB GridFS
- MongoDB 固定集合(Capped Collections)
- MongoDB 自動增長
- 免責聲明