MongoDB
以BSON
一種序列化的二進制格式存儲數據。在每一個序列化以前的文檔又支持如下列表中的數據類型,每種數據類型都有一個對應的數字和字符串別名。能夠用在$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
或者instanceof
instanceof/typeof 判斷一個字段值的類型java
如下的代碼示例,都是在Mongo shell
中實現的正則表達式
下面介紹一下幾種重要的數據類型shell
ObjectId
相似惟一主鍵,能夠很快的去生存和排序,包含 12 bytes,含義是:編程
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位的值。其中:
序數
在單個 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)
此類型用於存儲布爾值:true / false
掃描關注,查看更多文章,提升編程能力