時(shí)間:2024-02-08 11:17作者:下載吧人氣:33
MongoDB中的文檔類似json,我們知道,在json中,最常用的數(shù)據(jù)類型有null、bool、數(shù)組、字符串、數(shù)據(jù)、json對(duì)象等等。相對(duì)比較少,比如對(duì)于時(shí)間類型的數(shù)據(jù),json是無法表示的,而MongoDB中對(duì)json進(jìn)行了簡單的優(yōu)化,像json,但是又不是json。下面我們慢慢說
MongoDB的常用數(shù)據(jù)類型和MySQL比較像,你可以對(duì)比著看。它的常用數(shù)據(jù)類型有:
用于表示空值或者不存在的字段
{“x”:null}
這個(gè)容易理解,true or false
{“x”:true}
在MongoDB自帶的shell中不可用,shell中的需要使用函數(shù)來表示整數(shù),如下:
{“x”:NumberInt(“3”)}
如果我們寫成
{“x”:3}
這里的3會(huì)被表示成double。
最常用的數(shù)據(jù)類型
{“x”:”string”}
對(duì)象id是12字節(jié)的唯一ID
{“x”:ObjectId()}
在MongoDB的數(shù)據(jù)記錄里面,也就是文檔里面,必須有一個(gè)_id鍵,這個(gè)_id鍵你可以簡單理解為唯一標(biāo)識(shí),類似MySQL中的自增主鍵,但是它一般不設(shè)置成自增的,因?yàn)樵诜植际江h(huán)境中,同步自動(dòng)增加主鍵值既費(fèi)時(shí)又費(fèi)力,MongoDB為了保證分布式場景下的性能,通過自身生成方式來產(chǎn)生_id,_id的類型,稱之為ObjectId類型。
該類型使用12字節(jié)的存儲(chǔ)空間,每個(gè)字節(jié)里面是2位16進(jìn)制的數(shù)字,是一個(gè)24位的字符串。這12個(gè)字節(jié)的生成方式如下:
0、1、2、3位是時(shí)間戳,提供秒級(jí)別唯一性
4、5、6位是機(jī)器的唯一標(biāo)識(shí)符,提供機(jī)器級(jí)別唯一性
7、8位是當(dāng)前生成ObjectId的進(jìn)程標(biāo)識(shí)符,保證不同進(jìn)程的唯一性
9、10、11位是一個(gè)計(jì)數(shù)器,保證同一秒相同進(jìn)程產(chǎn)生的ObjectId的唯一性。
日期類型存儲(chǔ)的是從標(biāo)準(zhǔn)紀(jì)元開始的毫秒數(shù),不存儲(chǔ)時(shí)區(qū)。
{“x”:new Data()}
示例如下:
> db.num.insert({"age": new Date()}) WriteResult({ "nInserted" : 1 }) > db.num.find() { "_id" : ObjectId("5f96b5e15e5c5ff982b9c6af"), "age" : 28 } { "_id" : ObjectId("5f9835d0f24f04e23fb63878"), "age" : 3 } { "_id" : ObjectId("5f983621f24f04e23fb63879"), "age" : 3 } { "_id" : ObjectId("5f9838d2f24f04e23fb6387a"), "age" : ISODate("2020-10-27T15:12:18.739Z") }
網(wǎng)友評(píng)論