1. 程式人生 > >mongodb使用總結01-基礎概念以及連線方法_md

mongodb使用總結01-基礎概念以及連線方法_md

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下載

注意事項 :

  1. mongodb 預設使用 27017 對外提供訪問埠
  2. 編輯 /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