每日一句
If no one else guards the world, then I will come forward.
如果沒有別人保衛這個世界,那么我將挺身而出,
概述
MongoDB主要是由檔案(document)、集合(collection)、資料庫(database)這三部分組成的,類比于mysql的行、表、資料庫,
體系結構
MYSQL 與 MongoDB對比
MongoDB與SQL的結構對比詳解
| SQL Terms/Concepts | MongoDB Terms/Concepts | 解釋與說明 |
|---|---|---|
| database | database | 資料庫 |
| table | collection | 資料庫表/集合 |
| row | document or BSON document | 資料記錄行/檔案 |
| column | field | 資料庫欄位/域 |
| index | index | 索引 |
| table joins | embedded documents and linking | 表連接,MongoDB不支持,MongoDB通過嵌入式檔案來替代多表連接 |
| primary key Specify any unique column or column combination as primary key. | primary key In MongoDB, the primary key is automatically set to the _id field. | 主鍵,MongoDB自動將_id欄位設定為主鍵 |
| aggregation (e.g. group by) | aggregation pipeline See the SQL to Aggregation Mapping Chart. |
資料模型
MongoDB的最小存盤單位就是檔案(document)物件,檔案(document)物件對應于關系型資料庫的行,資料在MongoDB中以BSON ( Binary-JSON)檔案的格式存盤在磁盤上,
BSON ( Binary Serialized Document Format )是一種類json的一種二進制形式的存盤格式,簡稱Binary SON,
BSON和SON一樣,支持內嵌的檔案物件和陣列物件,但是BSON有JSON沒有的一些資料型別,如Date和BinData型別,
BSON采用了類似于C語言結構體的名稱、對表示方法,支持內嵌的檔案物件和陣列物件,具有輕量性、可遍歷性、高效性的三個特點,可以有效描述非結構化資料和結構化資料,
這種格式的優點是靈活性高,但它的缺點是空間利用率不是很理想,
Bson中,除了基本的SON型別:string integer,boolean,double,nullarray和object , mongo還使用了特殊的資料型別,
這些型別包括date,object idbinary data,regular expression和code,
每一個驅動都以特定語言的方式實作了這些型別,查看你的驅動的檔案來獲取詳細資訊,
BSON資料型別參考串列:
| 資料型別 | 描述 | 舉例 |
|---|---|---|
| 字串 | UTF-8字串都可表示為字串型別的資料 | {"x" : "foobar"} |
| 物件id | 物件id是檔案的12位元組的唯一 ID | {"X" :ObjectId() } |
| 布林值 | 真或者假:true或者false | {"x":true}+ |
| 陣列 | 值的集合或者串列可以表示成陣列 | {"x" : ["a", "b", "c"]} |
| 32位整數 | 型別不可用,JavaScript僅支持64位浮點數,所以32位整數會被自動轉換, | shell是不支持該型別的,shell中默認會轉換成64位浮點數 |
| 64位整數 | 不支持這個型別,shell會使用一個特殊的內嵌檔案來顯示64位整數 | shell是不支持該型別的,shell中默認會轉換成64位浮點數 |
| 64位浮點數 | shell中的數字就是這一種型別 | {"x":3.14159,"y":3} |
| null | 表示空值或者未定義的物件 | {"x":null} |
| undefifined | 檔案中也可以使用未定義型別 | {"x":undefifined} |
| 符號 | shell不支持,shell會將資料庫中的符號型別的資料自動轉換成字串 | |
| 正則運算式 | 檔案中可以包含正則運算式,采用JavaScript的正則運算式語法 | {"x" : /foobar/i} |
| 代碼 | 檔案中還可以包含JavaScript代碼 | {"x" : function() { /* …… */ }} |
| 二進制資料 | 二進制資料可以由任意位元組的串組成,不過shell中無法使用 | |
| 最大值/最小值 | BSON包括一個特殊型別,表示可能的最大值,shell中沒有這個型別, |
提示:
shell默認使用64位浮點型數值,{“x”:3.14}或{“x”:3},對于整型值,可以使用NumberInt(4位元組符號整數)或NumberLong(8位元組符
號整數),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}
美文佳句
讀過一段話,覺得很有感觸:溫柔的人通常是這樣誕生的,他們親身經歷過許許多多的難,過后決定不再讓其他人像自己這般難過,這份體貼,人們稱之為溫柔,
每個人的經歷不同,但我相信,溫柔的人必然都是具有同理心的人,他們知道有些話有些行為會讓人不舒服,所以能將心比心,在尊重自己的同時也尊重別人,要想被他人溫柔以待,就要先學會溫柔待人,
你好,我是yltrcc,日常分享技術點滴,歡迎關注我:ylcoder
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419031.html
標籤:其他
上一篇:RabbitMQ 相關概念
下一篇:MongoDB 常用啟動引數
