MongoDB是面向集合的文檔式資料庫,不像關聯式資料庫那樣,有表,列、行,mongoDB資料庫則是由一系列的文檔組成。以下介紹MongoDB的基本概念
一、 文檔
文檔是mongoDB資料庫的最小集合單位,其基本概念為:由多個鍵及其關聯的值有序組合在一起的集合單元。
如{“One”:”Hello World”,”Two”:”Hello,MongoDB”}
從概念可以分析得,由多個鍵。即可說明文檔的組成類似於hash表,每個鍵對應一個記錄值,事實上,可以將文檔看成關聯式資料庫中的行,每個索引值組合可以看成是這個行中對應的列,鍵表示列的名稱,值則為表列值。
文檔定義有如下要求:
1、鍵不能含有\O(Null 字元),在mongoDB中,這個字元用來表示的結尾
2、.和$e 有特別含義,在特定環境中使用,使用這兩個字元時。需考慮清楚。
3、以底線“_”也是系統保留字元。使用時需要考慮清楚
4、鍵是區分大小寫,如{“One”:”Hello”,”one’:”hello”},則表示不同的鍵
5、在同一個文檔中,不能有相同名稱的鍵。即大小寫都相同的鍵,如下面的文檔是非法的:
{“one”:”hello”,”one”:”helloworld”}
6、文檔中的索引值的類型可以不一樣的,如:
{“one”:1,”two”:”helloworld”,”three”:0.21}
二、 集合
集合即是一組文檔,如果說文檔類似於行的話。則集合則相當於表。
在mongoDB中,集合是無模式的,即一個集合中的文檔可以各式各樣的,在集合中,不同的文檔的索引值數目可以不一樣,其中的鍵也可以不一樣。不同文檔同一個鍵,其值可以不一樣,類型也可不一樣。也即在同一個集合中,文檔是相互獨立的。
由於集合沒有模式,而在實際使用中,可能會造成困擾,因為既然沒有什麼模式,集合的文檔可以是任意的,那麼就沒必要要多個集合了。比如,我們建立一個部落格資料庫,在一個集合中可以儲存部落格文章、文章類別、登入使用者等資料。當然,在實際運用中,怎麼運還得看情況而定。
集合命令的規範:
1、 集合名不是能是Null 字元串;
2、 集合名不能含有\O字元(Null 字元),mongodb中此字元表示集合名的結尾;
3、 集合名不能以”system.”開頭,因為此首碼是系統本身保留的首碼,如system.uses,表示系統使用者資訊,system.namespaces儲存所有資料庫集合的資訊;
4、 集合名稱不能有$字元。
三、 子集合
子集合可以看成是一個命名,如blog.users,blog.author,在這裡,blog本身可以不是集合,還可以不存在。使用子集合是為了更好更有條理的區分集合
四、 資料庫
多個集合組成資料庫。一個MongoDB執行個體中可以有多個資料庫,每個資料庫都是完全獨立的,有自己的使用者,許可權資訊,即便在磁碟上,其儲存的檔案也是分開的,這和SQL server之類的資料庫一樣。不同資料庫其資料庫檔案可以存放在不同的目錄。資料庫命名規則如下:
1、 不能是Null 字元串;
2、 不得含有’’(空格)、,、$、/、\、和\O(Null 字元);
3、 應全部小寫
4、 最多64個位元組。
除外,資料庫名不能與現有系統保留庫同名,如admin,local,及config
資料庫命名空間:資料庫命名空間,是把資料庫名稱放在集合前面所得到的所有字串資訊。即為命名空間。如blog.article.author。命令空間的長度在實際運用中不能超過100個字元。
中文問題。當集合或文檔中使用中文時,出現問題:
Malformed UTF-8 character sequence at offset 33
查了好多資訊發現,暫時沒有解決。得使用第三方的API來解決。鬱悶。