MongoDB
MongoDB 屬于文檔數(shù)據(jù)庫,是將數(shù)據(jù)存儲為一個文檔赏淌,數(shù)據(jù)結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。
文檔數(shù)據(jù)庫:
文檔數(shù)據(jù)庫的核心是鍵/值存儲挺勿,將數(shù)據(jù)存儲在,XML喂柒、JSON不瓶、Sinary 、JSON (MongoDB)或任何數(shù)據(jù)庫可理解的文檔中灾杰。
鍵值對:
key-value {“name”: “xunwukong”}
key--name
value--xunwukong
JSON
JSON是一種簡單數(shù)據(jù)格式蚊丐,它有三種
數(shù)據(jù)結構:
鍵值對 —— Name/Value (Key/Value)
對象 —— Object
數(shù)組 —— Arrays
注意:
一個有效的JSON文檔需要被包含在一對花括號內
{ JSON-Data }
JSON中的數(shù)值(鍵值對中的值)可以是以下任意一種:
Number 數(shù)值類型數(shù)據(jù)可以是整型也可以是雙精度的浮點型數(shù)據(jù)
Boolean JSON中的Boolean值可以用true或false來表示
Object 未排序鍵值對的集合
Array JSON中[]來包含數(shù)組元素
String JSON中“”或‘’來包含字符串元素
null 表示一個屬性或元素沒有值
BSON
BSON是MongoDB在集合中存儲文檔時使用的類JSON文檔的二進制編碼。
BSON中的數(shù)值(鍵值對中的值)可以是以下任意一種:
Number 數(shù)值類型數(shù)據(jù)可以是整型也可以是雙精度的浮點型數(shù)據(jù)
Boolean BSON中的Boolean值可以用true或false來表示
Object 未排序鍵值對的集合
Array BSON中[]來包含數(shù)組元素
String BSON中“”或‘’來包含字符串元素
null 表示一個屬性或元素沒有值
date(整數(shù)艳吠,自UNIX時間的毫秒數(shù))
byte array(二進制數(shù)組)
JSON和BSON區(qū)別
BSON增加了對JSON不支持的數(shù)據(jù)類型如日期和二進制的支持麦备。
(1)更快的遍歷速度
(2)操作更簡易
(3)增加了額外的數(shù)據(jù)類型
ObjectId
MongoDB采用了一個稱之為ObjectId的類型來做主鍵。ObjectId是一個12字節(jié)的 BSON 類型字符串ObjectId的值由12個字節(jié)組成讲竿,其中泥兰,
4個字節(jié)表示時間戳(自Unix紀元以來的秒數(shù)),記錄創(chuàng)建時間题禀;
3個字節(jié)表示機器標識符鞋诗,保證不同主機產(chǎn)生不同的ObjectId值;
2個字節(jié)表示進程ID迈嘹,保證在同一臺主機不同MongoDB進程產(chǎn)生不同的ObjectId值削彬;
3個字節(jié)表示自增計數(shù)器(以隨機值開頭),保證同一主機同一進程同一秒內產(chǎn)生ObjectId的唯一性秀仲。
注:時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總毫秒數(shù)融痛;
ObjectId =時間戳(4字節(jié)) + 機器標識碼(3字節(jié)) + 進程ID(2字節(jié)) + 計數(shù)器(3字節(jié))
ObjectId("5e58b654142055252e21110b") 劃分:ObjectId("5e58b654--142055--252e--21110b")