參考地址: http://wawlian.iteye.com/blog/1303276
?
?
MongoDB
的文檔其實和
JSON
?
很類似,與
JavaScript
的對象概念也很像。但是
?
MongoDB
的數據類型更加豐富。下面我們一一介紹
?
MongoDB
的數據類型。
數據類型
|
描述
|
舉例
|
32
?
位整數
|
32
?
位整數。
shell
?
是不支持該類型的,
?
shell
?
中默認會轉換成
?
64
位浮點數
|
? |
64
?
位整數
|
64
?
位整數。
shell
?
是不支持該類型的,
?
shell
?
中默認會轉換成
?
64
位浮點數
|
? |
64
?
位浮點數
|
64
?
位浮點數。
shell
?
中的數字就是這一種類型
|
{
?
“x”
:
?
3.14
?
,
“y”
?
:
?
3}
|
字符串
|
UTF-8
?
字符串
|
{
?
“foo”:“bar”}
|
符號
|
shell
?
不支持,
shell
?
會將數據庫中的符號類型的數據自動轉換成字符串
|
? |
對象
?
id
|
文檔的
?
12
?
字節的唯一
id
|
{
?
“id”: ObjectId()}
|
日期
|
從標準紀元開始的毫秒數
|
{
?
“date”:new Date()}
|
正則表達式
|
文檔中可以包含正則表達式,遵循
?
JavaScript
?
的語法
|
{
?
“foo”:/foobar/i}
|
代碼
|
文檔中可以包含
?
JavaScript
?
代碼
|
{
?
“x”
:
?
function() {}}
|
二進制數據
|
任意字節的二進制串組成,
?
shell
?
不支持
|
? |
最大值
|
表示可能的最大值,
?
shell
?
不支持
|
? |
最小值
|
表示可能的最小值,
?
shell
?
不支持
|
? |
未定義
|
undefined
|
{
?
“x”
:
?
undefined}
|
數組
|
值的集合或者列表
|
{
?
“arr”: [“a”,“b”]}
|
內嵌文檔
|
文檔可以作為文檔中某個
?
key
?
的
value
|
{
?
“x”:{“foo”:“bar”}}
|
null
|
表示空值或者未定義的對象
|
{
?
“x”:null}
|
布爾值
|
真或者假:
?
true
?
或者
false
|
{
?
“x”:true}
?
|
?
?
上面的大部分類型都是顯而易見的,但是有必要詳細解釋一下對象
?
id
類型。我們上面說了,對象
?
id
類型是一個
?
12
字節的唯一
?
id
。每個字節
?
2
位
?
16
進制數,因此整個
?
id
類型是一個
?
24
位的字符串。其結構如下表所示:
前面四個字節代表從標準紀元開始的時間戳,以秒為單位。
接下來三個字節表示機器號,MongoDB入門2——MongoDB數據類型一般是機器名的hash值。這可以保證不同機器產生的id不會沖突。
接下來兩個字節表示進程id號,保證統一機器不同進程產生的id不沖突
最后三個是計數器的計數值,對于任意一秒鐘,可以產生2^24個數
??? 我們之前提到過,如果不在插入的時候手動的添加_id鍵,那么系統會自動添加一個。盡管MongoDB的id類型被設計成輕量級的,但是這樣還是會不好。畢竟服務器創建這個還是會有開銷的。因此,這個工作一般會放到客戶端來做。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
