MongoDB的數據類型介紹


MongoDBBSON一種序列化的二進制格式存儲數據。在每一個序列化以前的文檔又支持如下列表中的數據類型,每種數據類型都有一個對應的數字字符串別名。能夠用在$type操做符中用於查詢文檔javascript


數據類型html

Type Number String Notes
Double 1 "double" -----
字符串 2 "string" -----
對象 3 "object" -----
數組 4 "array" -----
二進制數據 5 "binData" -----
未定義 6 "undefined" 已過時
ObjectId 7 "objectId" -----
Boolean 8 "bool" -----
日期 9 "date" -----
10 "null" -----
正則表達式 11 "regex" -----
DBPointer 12 "dbPointer" 已過時
JavaScript(代碼) 13 "javascript" 此數據類型用於將JavaScript代碼存儲到文檔中
符號 14 "symbol" 已過時
JavaScript(帶範圍) 15 "javascriptWithScope" -----
32位整數 16 "int" -----
時間戳 17 "timestamp" -----
64位整數 18 "long" -----
Decimal128 19 "decimal" New in version 3.4
Min key -1 "minKey" -----
Max key 127 "maxKey" -----

你能夠使用typeof或者instanceofinstanceof/typeof 判斷一個字段值的類型java

如下的代碼示例,都是在Mongo shell中實現的正則表達式

下面介紹一下幾種重要的數據類型shell

ObjectId

ObjectId 相似惟一主鍵,能夠很快的去生存和排序,包含 12 bytes,含義是:編程

  • 前4個字節表示建立unix時間戳,格林尼治時間 UTC時間,比北京時間晚了8個小時
  • 接下來的3個字節是機器標識碼
  • 緊接的兩個字節由進程id組成(PID
  • 最後三個字節是隨機數

圖片描述
MongoDB中存儲的文檔必須有一個_id鍵。這個鍵的值能夠是任何類型的,默認是個ObjectId對象數組

因爲ObjectId中保存了建立的時間戳,因此你不須要爲你的文檔保存時間戳字段,你能夠經過 getTimestamp 函數來獲取文檔的建立時間:函數

> var newObject = ObjectId()
> newObject.getTimestamp()
ISODate("2017-11-25T07:21:10Z")

ObjectId 轉爲字符串編碼

> newObject.str
5a1919e63df83ce79df8b38f

字符串

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

時間戳

BSON有一個特殊的時間戳類型用於 MongoDB 內部使用,與普通的 日期 類型不相關。 時間戳值是一個64位的值。其中:

  • 前32位是一個 time_t 值(與Unix新紀元相差的秒數)
  • 後32位是在某秒中操做的一個遞增的序數

單個 mongod 實例中,時間戳值一般是惟一的

在複製集中, oplog 有一個 ts 字段。這個字段中的值使用BSON時間戳表示了操做時間

BSON時間戳類型主要用於 MongoDB內部 使用 。在大多數狀況下的應用開發中,你能夠使用BSON日期類型

日期

表示當前距離Unix新紀元(1970年1月1日)的毫秒數.日期類型是有符號的,負數表示1970年以前的日期

> var mydate1 = new Date() //格林尼治時間
> mydate1
ISODate("2017-11-25T07:38:00.833Z")
> typeof mydate1
object
> var mydate2 = ISODate() //格林尼治時間
> mydate2
ISODate("2017-11-25T07:38:57.996Z")
> typeof mydate2
object

這樣建立的時間是日期類型,能夠使用JS中的Date類型的方法

返回一個時間類型的字符串

> var mydate1str = mydate1.toString()
> mydate1str
Sat Nov 25 2017 15:38:00 GMT+0800 (CST)
> typeof mydate1str
string

或者

> Date()
Sat Nov 25 2017 15:43:28 GMT+0800 (CST)

Boolean

此類型用於存儲布爾值:true / false

圖片描述

掃描關注,查看更多文章,提升編程能力

相關文章
相關標籤/搜索