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

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:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 這是固定的格式,必須要指定。
  • username:password@ 可選項,如果設置,在連接數據庫服務器之後,驅動都會嘗試登陸這個數據庫
  • host1 必須的指定至少一個host, host1 是這個URI唯一要填寫的。它指定了要連接服務器的地址。如果要連接複製集,請指定多個主機地址。
  • portX 可選的指定端口,如果不填,默認爲27017
  • /database 如果指定username:password@,連接並驗證登陸指定數據庫。若不指定,默認打開 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
    
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章