MongoDB數(shù)據(jù)類型以及數(shù)據(jù)批量插入

MongoDB支持以下數(shù)據(jù)類型

類型        數(shù)字          備注
Double        1         雙精度浮點(diǎn)數(shù) - 此類型用于存儲(chǔ)浮點(diǎn)值
String        2         字符串 - 這是用于存儲(chǔ)數(shù)據(jù)的最常用的數(shù)據(jù)類型。MongoDB中的字符串必須為UTF-8
Object        3         對(duì)象 - 此數(shù)據(jù)類型用于嵌入式文檔
Array         4         數(shù)組 - 此類型用于將數(shù)組或列表或多個(gè)值存儲(chǔ)到一個(gè)鍵中
Binary data   5         二進(jìn)制數(shù)據(jù) - 此數(shù)據(jù)類型用于存儲(chǔ)二進(jìn)制數(shù)據(jù)
Undefined     6         已廢棄
Object id     7         對(duì)象ID - 此數(shù)據(jù)類型用于存儲(chǔ)文檔的ID
Boolean       8         布爾類型 - 此類型用于存儲(chǔ)布爾值(true / false)值
Date          9         日期 - 此數(shù)據(jù)類型用于以UNIX時(shí)間格式存儲(chǔ)當(dāng)前日期或時(shí)間??梢酝ㄟ^創(chuàng)建日期對(duì)象并將日,月,年的日期進(jìn)行指定自己需要的日期時(shí)間
Null          10        Null - 此類型用于存儲(chǔ)Null值
Regular       11        正則表達(dá)式 - 此數(shù)據(jù)類型用于存儲(chǔ)正則表達(dá)式
JavaScript    13        代碼 - 此數(shù)據(jù)類型用于將JavaScript代碼存儲(chǔ)到文檔中
Symbol        14        符號(hào) - 該數(shù)據(jù)類型與字符串相同;但是,通常保留用于使用特定符號(hào)類型的語言
JavaScript (with scope)  15     代碼 - 此數(shù)據(jù)類型用于將帶作用域的JavaScript代碼存儲(chǔ)到文檔中
32-bit integer           16     32位整型 - 此類型用于存儲(chǔ)數(shù)值
Timestamp                17     時(shí)間戳 - 當(dāng)文檔被修改或添加時(shí),可以方便地進(jìn)行錄制
64-bit integer           18     64位整型 - 此類型用于存儲(chǔ)數(shù)值
Min key                  255    最小鍵 - 此類型用于將值與最小BSON元素進(jìn)行比較    
Max key                  127    最大鍵 - 此類型用于將值與最大BSON元素進(jìn)行比較

$type

??$type操作符是基于BSON類型來檢索集合中匹配的數(shù)據(jù)類型,并返回結(jié)果。數(shù)字的$type為1、字符串的$type為2、布爾值的$type為8。

數(shù)據(jù)批量插入

在操作數(shù)據(jù)庫時(shí)要注意兩個(gè)能力:
第一個(gè)是快速存儲(chǔ)能力。
第二個(gè)是方便迅速查詢能力。

【批量插入】
批量數(shù)據(jù)插入是以數(shù)組的方式進(jìn)行的。

db.test.insert([
    {"_id":1},
    {"_id":2},
    {"_id":3}
])

??\注意一次插入不要超過48M,像.zip和大圖片什么的盡量用靜態(tài)存儲(chǔ),MongoDB存儲(chǔ)靜態(tài)路徑就好,這也算是一個(gè)規(guī)則。

【批量插入性能測(cè)試】
循環(huán)插入測(cè)試:

var startTime = (new Date()).getTime(); //得到開始時(shí)間
var  db = connect('log');  //鏈接數(shù)據(jù)庫
//開始循環(huán)
for(let i=0;i<1000;i++){
    db.test.insert({num:i});
}
var runTime = (new Date()).getTime()-startTime;//計(jì)算時(shí)間差
print ('This run this is:'+runTime+'ms');//打印出來

This run this is:430ms

批量插入測(cè)試:

var startTime = (new Date()).getTime();
var  db = connect('log');
var tempArray = []              //聲明一個(gè)數(shù)組
for(let i=0;i<1000;i++){        //循環(huán)向數(shù)組中放入值
    tempArray.push({num:i});
}
db.test.insert(tempArray)       //批量一次插入
var runTime = (new Date()).getTime()-startTime;
print ('This run this is:'+runTime+'ms');

This run this is:23ms
對(duì)比可以看出,批量插入性能遠(yuǎn)遠(yuǎn)超過循環(huán)插入。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容