下表爲MongoDB中經常使用的幾種數據類型。express
數據類型 | 描述 |
---|---|
String | 字符串。存儲數據經常使用的數據類型。在 MongoDB 中,UTF-8 編碼的字符串纔是合法的。 |
Integer | 整型數值。用於存儲數值。根據你所採用的服務器,可分爲 32 位或 64 位。 |
Boolean | 布爾值。用於存儲布爾值(真/假)。 |
Double | 雙精度浮點值。用於存儲浮點值。 |
Min/Max keys | 將一個值與 BSON(二進制的 JSON)元素的最低值和最高值相對比。 |
Array | 用於將數組或列表或多個值存儲爲一個鍵。 |
Timestamp | 時間戳。記錄文檔修改或添加的具體時間。 |
Object | 用於內嵌文檔。 |
Null | 用於建立空值。 |
Symbol | 符號。該數據類型基本上等同於字符串類型,但不一樣的是,它通常用於採用特殊符號類型的語言。 |
Date | 日期時間。用 UNIX 時間格式來存儲當前日期或時間。你能夠指定本身的日期時間:建立 Date 對象,傳入年月日信息。 |
Object ID | 對象 ID。用於建立文檔的 ID。 (每一個文檔都有) |
Binary Data | 二進制數據。用於存儲二進制數據。 |
Code | 代碼類型。用於在文檔中存儲 JavaScript 代碼。 |
Regular expression |
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 位的值。其中:3d
- 前32位是一個 time_t 值(與Unix新紀元相差的秒數)
- 後32位是在某秒中操做的一個遞增的
序數
在單個 mongod 實例中,時間戳值一般是惟一的。unix
在複製集中, oplog 有一個 ts 字段。這個字段中的值使用BSON時間戳表示了操做時間。code
BSON 時間戳類型主要用於 MongoDB 內部使用。在大多數狀況下的應用開發中,你可使用 BSON 日期類型。對象
日期
表示當前距離 Unix新紀元(1970年1月1日)的毫秒數。日期類型是有符號的, 負數表示 1970 年以前的日期。
> var mydate1 = new Date() //格林尼治時間 > mydate1 ISODate("2018-03-04T14:58:51.233Z") > typeof mydate1 object > var mydate2 = ISODate() //格林尼治時間 > mydate2 ISODate("2018-03-04T15:00:45.479Z") > typeof mydate2 object
這樣建立的時間是日期類型,可使用 JS 中的 Date 類型的方法。
返回一個時間類型的字符串:
> var mydate1str = mydate1.toString() > mydate1str Sun Mar 04 2018 14:58:51 GMT+0000 (UTC) > typeof mydate1str string
或者
> Date() Sun Mar 04 2018 15:02:59 GMT+0000 (UTC)