MongoDb數據結構詳解


首先,向數據庫插入一條bjson數據

首先是定義文檔,然后使用admin用戶名密碼登錄,進入test數據庫,向test數據庫中插入此文檔(“表名稱和表中的記錄”)

插入結果,查看mongoVUE如下圖所示

從上圖可以看出系統自帶的三個數據庫,local,admin,test,在加入一條記錄的時候,會自動生成_id的自動標識。

我們再添加圖片,可以使用mongoVUE添加,如下圖所示。

Collections:在mongodb中叫做集合,是文檔的集合。無模式,可以存儲各種各樣的文檔。類似mysql中的表。

在關系型數據庫中,關系數據庫的每一張表就是一個關系模型的映射,每張表的字段就是對應的實體的屬性和主外鍵的集合,每個字段需要提前定義。

Document:這里的user集合(“表”)有一個document(document可以理解為mysql中的記錄)。文檔是mongodb保存數據的基本單元。數據的存儲結構為BSON格式,也就是我們開始添加的文檔,key value鍵值對類型。

文檔中保存到數據類型可以為:null、boolean、String、Object、32位整數、64位整數、64位浮點數、日期、正則表達式、js代碼、二進制數據、數組、內嵌文檔、最大值、最小值、未定義類型。

GridFS:因為bson對象的大小有限制,不適合存儲大型文件,GridFS文件系統為大型文件提供了存儲的方案,GridFS下的fs保存的是圖片、視屏等大文件。

無論是bson對象還是GriFs中存儲的大文件,我們發現當添加一個文檔的時候,會自動的添加_id ,不同的是圖片添加后會自動的加上_id,chunkSize,md5,legnth,aliases等,這些屬性是我們上傳完圖片后,mongodb分析后自動添加的,系統自動保存。

 

MongoDB的數據類型介紹

 

  參考MongoDB官網:https://docs.mongodb.com/manual/reference/bson-types/

  MongoDB文檔存儲是使用BSON類型,BSON(BSON short for Bin­ary JSON, is a bin­ary-en­coded seri­al­iz­a­tion of JSON-like doc­u­ments)是二進制序列化的形式。類如JSON,同樣支持內嵌各種類型。

  

Type Number Alias Notes
Double 1 “double”  
String 2 “string”  
Object 3 “object”  
Array 4 “array”  
Binary data 5 “binData”  
Undefined 6 “undefined” Deprecated.
ObjectId 7 “objectId”  
Boolean 8 “bool”  
Date 9 “date”  
Null 10 “null”  
Regular Expression 11 “regex”  
DBPointer 12 “dbPointer” Deprecated.
JavaScript 13 “javascript”  
Symbol 14 “symbol” Deprecated.
JavaScript (with scope) 15 “javascriptWithScope”  
32-bit integer 16 “int”  
Timestamp 17 “timestamp”  
64-bit integer 18 “long”  
Decimal128 19 “decimal” New in version 3.4.
Min key -1 “minKey”  
Max key 127 “maxKey”

 

  重點介紹幾個類型,

  ObjectId類型:這是MongoDB生成的類似關系型DB表主鍵的唯一key,生成快速。具體由12個字節組成:

  前4個字節是unix秒,3個字節的機器標識符(為了分布式下的主鍵唯一),2個字節的進程id,3個字節的計數器數字

  • a 4-byte value representing the seconds since the Unix epoch,
  • a 3-byte machine identifier,
  • a 2-byte process id, and
  • a 3-byte counter, starting with a random value.         

  MongoDB的設計之初就是要做分布式數據庫。從ObjectId唯一主鍵的生成上,值得分布式系統設計人員參考。

  3個字節的機器標識符,表示MongoDB實例所在機器的不同;2個字節的進程id,表示相同機器的不同MongoDB實例。再加上時間戳和隨機數(3個字節隨機數,同一秒上,理論上可以有2^24次個插入),很大程度上保證了ObjectId的唯一性。

  

  String類型:

    BSON字符串都是UTF-8編碼。

  Timestamps類型:

    BSON具有內部MongoDB使用的特殊時間戳類型,並且不與常規Date類型相關聯。 時間戳值是64位值,其中:

    第一個32bit是unix時間戳秒;

    第二個32bit是當前秒的遞增操作數。

   可以保證一個mongod實例下,timestamps總是唯一的。

  Date類型:

    BSON Date是一個64bit有符號整數,表示自Unix紀元以來的毫秒數(1970年1月1日)。 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM