標籤:style blog os 使用 sp java strong on 檔案
Mongodb的基本概念
文檔:是MongoDB中資料的基本單元,類似於關係型資料庫中的行。
集合:多個文檔組成一個集合,類似於關係型資料庫中的表。
資料庫:MongoDB的當個執行個體可以容納多個獨立的資料庫,每個資料庫有自己的集合和許可權。
鍵:每個文檔都有一個特殊的鍵”_id”,在所處的集合中是唯一的。
多個索引值對有序的放在一起便是文檔,如:
{ "name":"wangdh","age":"22"}
上面的文檔包含兩個鍵name和age,其值分別是wangdh和22.
說明:
1)文檔的索引值對是有序的,也就是說,下面的文檔與上面的文檔是兩個不同的文檔:
{"age":"22","name":"wangdh"}
2)文檔的鍵是字串。
3)MongoDB不但區分類型,還區分大小寫。即下面的兩個文檔是不同的:
{"age":"22","Age":22}
{"age":22," Age ":"22"}
4)同一個文檔不能有相同的鍵,如下面的文檔是不合法的:
{"age":"22","age":22}
集合是一組文檔,相當於關係型資料庫的表。
1)集合的無模式性
無模式的意思是:一個集合中的文檔可以各式各樣,文檔的索引值對數、索引值對順序可以不一樣。例如下面的文檔可以存在於一個集合中:{"age":"22","Age":22}、{"name":"wangdh"}
但通過情況下,為了方便使用,一個集合往往只存放模式一致的文檔。
2)子集合:通過“.”字元分開的按命名空間劃分的子集合,如一個帶有部落格功能的應用可能包含兩個集合:bolg.posts、blog.authors
多個文檔組成集合,多個集合組成資料庫。一個MongoDB執行個體可以承載對個資料庫,每個資料庫都有獨立的許可權控制。
注意:資料庫名最終會變成檔案系統裡的檔案。
1)內建資料庫
admin:從許可權角度看,相當於root資料庫,要是將一個使用者添加到此資料庫,這個使用者自動繼承所有資料庫的許可權。
local:這個資料永遠不會被複製,可以用來儲存限於本地單台伺服器的任意集合。
config:當Mongo用於分區設定時,該資料庫儲存分區的相關資訊。
2)命名空間
將資料庫的名字放在集合面前,得到的就是集合的完全限定名,成為命名空間。例如:在test資料庫中有一個blog.posts集合,則該集合的命名空間就是:test.blog.posts.命名空間的長度不得超過121位元組。
MongoDB中儲存的文檔必須有一個”_id”鍵,可以是任意類型,預設是ObjectId對象。在一個集合中,每個文檔都有唯一的”_id”鍵,來確保其唯一性。
1)ObjectId
使用12位元組的儲存空間,每個位元組兩位十六進位數,是一個24位的字串。前4個位元組是時間戳記,精確到秒,接下來3個位元組是所在主機的唯一標示符(通過是主機名稱的散列值),接下來2個位元組是產生該ObjectId的進程標示符(PID)、最後3個位元組是一個自動成長的計數器。
前9個位元組保證了同一秒鐘不同機器產生的ObjectId是唯一的,後3個位元組確保相同進程同一秒產生的ObjectId是不一樣的。
MongoDB Shell
MongoDB內建一個JavaScript shell,可以通過命令列與MongoDB執行個體互動。
windows平台下,通過在命令列運行bin目錄下的mongo.exe檔案,即可啟動shell;Linux下通過運行mongo檔案啟動shell。shell會在啟動時自動連接MongoDB伺服器,所以要確保在使用shell之前啟動mongod。
shell是一個獨立的? MongoDB用戶端,開啟時,shell會連到MongoDB伺服器的test資料庫,並把這個資料庫連接賦值給全域變數db。可以通過use命令來轉換資料庫:use wangdh(如果該資料庫不存在則會建立)。
一般資料庫的基本操作都是:建立、讀取、更新、刪除(CRUD).
1)建立 insert
insert函數添加一個文檔到集合中。例如:先通過局部變數t1儲存要插入的文檔,然後通過全域變數db.集合名.insert(t1)將文檔t1插入到指定集合中(集合不存在時會自動建立)。
>t1={"name":"wangdh","age":22}
>db.user.insert(t1)
2)讀取 find
find函數返回集合中的所有文檔,findOne函數返回一個文檔。
例如:db.user.find()會將剛才插入的文檔讀取出來。
兩個函數都可以接受查詢文檔形式的行動條件,使用find時,shell自動顯示最大20個匹配的文檔
3)更新 update
update函數接受至少兩個參數:第一個是要更新的限定條件,第二個是新的文檔。如:
>newName={"name":"newName"}
>db.user.update({"name":"wangdh"}, newName)
4)刪除 remove
remove函數從資料庫中永久性的刪除文檔,在不適用參數指定限定的情況下,會刪除一個集合內的所有文檔,例如:db.user.remove()
MongoDB學習筆記—02 MongoDB入門