mongodb使用總結01-基礎概念以及連線方法_md
阿新 • • 發佈:2018-12-21
step 1 基礎概念
在mongodb中基本的概念是
資料欄位/域(field)、 文件(document)、 集合(collection)、 資料庫(datebase),
把這些概念和關係型資料庫中的概念相互對比就會比較容易理解:
SQL術語/概念 | MongoDB術語/概念 | 解釋/說明 |
---|---|---|
database | database | 資料庫 |
table | collection | 資料庫表/集合 |
row | document | 資料記錄行/文件 |
column | field | 資料欄位/域 |
primary key | primary key | 主鍵,MongoDB自動將_id欄位設定為主鍵 |
1. 資料庫(database)
一個mongodb中可以建立多個數據庫
MongoDB的單個例項可以容納多個獨立的資料庫,每一個都有自己的集合和許可權,不同的資料庫也放置在不同的檔案中。
"show dbs" 命令可以顯示所有資料的列表。
> show dbs admin 0.000GB config 0.000GB local 0.000GB test 0.000GB
"use {dbname}" 命令可以切換使用的資料庫 和建立新的資料庫(新的資料庫只有插入第一條資料的時候才會被真正建立)
> use admin switched to db admin
"db" 命令可以檢視當前所在資料庫
>db admin
2 集合(collection)
集合就是 MongoDB 文件組, 類似於關係型資料庫中的 table
集合存在於資料庫中,集合沒有固定的結構下面這些全部可以儲存與同一集合中
{"name":"user1"} {"name":"user2","age":18} {"age":20}
注意
- 集合名不能是空字串""。
- 集合名不能含有\0字元(空字元),這個字元表示集合名的結尾。
- 集合名不能以"system."開頭,這是為系統集合保留的字首。
- 使用者建立的集合名字不能含有保留字元。有些驅動程式的確支援在集合名裡面包含,這是因為某些系統生成的集合中包含該字元。除非你要訪問這種系統建立的集合,否則千萬不要在名字裡出現$。
capped collections
就是固定大小的collection, 單位是位元組。collection 的資料儲存空間值提前分配的。
注意: 指定的儲存大小包含了資料庫的頭資訊。
db.createCollection("mycoll", {capped:true, size:100000})
2文件(document)
文件是一組鍵值(key-value)對(即BSON), 即相當於RDBMS(關係型資料庫)中的一行。
MongoDB 的文件不需要設定相同的欄位,並且相同的欄位不需要相同的資料型別,這與關係型資料庫有很大的區別,也是 MongoDB 非常突出的特點。{"name":"user1"} {"name":"user2","age":"18"} {"name":"user3","age":20}
需要注意的是:
- 文件中的鍵/值對是有序的。
- 文件中的值不僅可以是在雙引號裡面的字串,還可以是其他幾種資料型別(甚至可以是整個嵌入的文件)。
- MongoDB區分型別和大小寫。
- MongoDB的文件不能有重複的鍵。
- 文件的鍵是字串。除了少數例外情況,鍵可以使用任意UTF-8字元。
文件鍵命名規範:
- 鍵不能含有\0 (空字元)。這個字元用來表示鍵的結尾。
- .和$有特別的意義,只有在特定環境下才能使用。
- 以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)。
step2 資料庫連線
1.標準URI 連線(一般用於程式中訪問,操作資料庫)
mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
- mongodb:// 這是固定的格式,必須要指定。
- username:[email protected] 可選項,如果設定,在連線資料庫伺服器之後,驅動都會嘗試登陸這個資料庫
- host1 必須的指定至少一個host, host1 是這個URI唯一要填寫的。它指定了要連線伺服器的地址。如果要連線複製集,請指定多個主機地址。
- portX 可選的指定埠,如果不填,預設為27017
- /database 如果指定username:[email protected],連線並驗證登陸指定資料庫。若不指定,預設開啟 test 資料庫。
- ?options 是連線選項。如果不使用/database,則前面需要加上/。所有連線選項都是鍵值對name=value,鍵值對之間通過&或;(分號)隔開
選項 描述 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的時間。
2.MongoDB的視覺化工具
推薦 Robomongo
Robomongo 是開源,免費的MongoDB管理工具,下載地址:Robomongo下載
注意事項 :
- mongodb 預設使用 27017 對外提供訪問埠
- 編輯
/etc/mongod.conf
, mongodb預設只對本機提供訪問許可權, 需要其他機器訪問, 需要修改 bindIp 為 其他Ip, 使用 0.0.0.0 為所有ip
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
3. mongo自帶 shell
使用 mongo
命令開啟命令列,即可操作資料庫
mongo