經常使用基本數據類型:javascript
null用於表示空值或者不存在的字段:java
{"data":null}正則表達式
布爾類型只有兩個值,true和false:mongodb
{"data":true}、{"data":false}shell
字符串類型的數據是由UTF-8字符組成:數據庫
{"data":"pingan"}數組
查詢時,使用正則表達式做爲限定條件,語法和javascript的正則表達式同樣:服務器
{"data":/pingan/i}微信
對象id是一個12字節(24字符)的ID,是文檔的惟一標識。ide
{"data":ObjectId()}
shell默認使用64位的浮點型數值,即Double類型。對於整型值,可使用NumberInt類(4字節帶符號整數)或NumberLong類(8字節帶符號整數)。
{"data":3.33},表示Double類型
{"data":NumberInt("3")},表示Int類型
{"data":NumberLong("3")},表示Long類型
數據列表或者數據集均可以表示爲數組。數組的元素能夠是數值、字符串等等其餘基本數據類型,元素之間用英文逗號分隔開。
{"data":[1,2,3]}、{"data":["a","b","c"]}
日期被存儲爲自新紀元以來通過的毫秒數,不存儲時區:
{"data":new Date()}
文檔能夠嵌套其餘文檔,被嵌套的文檔做爲父文檔的值:
{"data":{"company":"pingan"}}
二進制數據是一個任意字節的字符串,要將非UTF-8字符保存到數據庫中,二進制數據是惟一的方式。好比保存圖片的數據。可是不能直接在shell中使用。
1 //把圖片存到mongodb中 2 public void SaveImgMG(byte[] byteImg) 3 { 4 Document doc = new Document(); 5 doc["ID"] = 1; 6 doc["Img"] = byteImg; 7 mongoCollection.Save(doc); 8 } 9 //獲取mongodb存儲的圖片字節數據 10 public byte[] GetImgMG() 11 { 12 Document doc= mongoCollection.FindOne(new Document { { "ID", 1 } }); 13 return doc["Img"] as Binary; 14 }
文檔:
文檔就是鍵值對的一個有序集,是MongoDB中數據的基本單元,很是相似於關係型數據庫管理系統中的行,但更具表現力。
1 var mydoc = { 2 _id: ObjectId("5099803df3f4948bd2f98391"), 3 name: { first: "Alan", last: "Turing" }, 4 birth: new Date('Jun 23, 1912'), 5 death: new Date('Jun 07, 1954'), 6 contribs: [ "Turing machine", "Turing test", "Turingery" ], 7 views : NumberLong(1250000) 8 }
集合:
集合就是一組文檔,若是將MongoDB中的一個文檔比喻爲關係型數據庫中的一行,那麼一個集合就至關於一張表的概念。
數據庫:
在MongoDB中,多個文檔組成集合,而多個集合能夠組成數據庫,一個MongoDB實例,能夠承載多個數據庫,每一個數據庫擁有0個或者多個集合。MongoDB3.0這個版本中,有三個數據庫名是保留的。分別是:admin、local、config。
admin:從身份驗證的角度來說,這是「root」數據庫。若是將一個新建的一個用戶添加到admin數據庫,這個用戶就自動得到全部數據庫的權限。
local:這個數據庫永遠都不能夠複製,且一臺服務器上的全部本地集合均可以存儲在這數據庫中。
config:MongoDB用於分片設置時,分片信息會存儲在config數據庫中。
shell中的基本操做:
shell會用到4個基本的操做:建立、讀取、更新和刪除(即CRUD操做)。
建立:
1 db.person.insert({"name":"ryan","age":26}); 2 db.person.find({"name":"ryan"});
更新:使用update修改人員信息。update接受(至少)兩個參數,第一個是限定條件(用於匹配待更新的文檔),第二個是新的文檔。
1 db.person.update({"name":"ryan"},{"name":"ryan","age":27}); 2 db.person.find({"name":"ryan"});
刪除:使用remove方法可將文檔從數據庫中永久刪除。若是沒有使用任何參數,它會將集合內的全部文檔所有刪除(甚用!!)。它能夠接受一個做爲限定條件的文檔做爲參數。
1 db.person.remove({"name":"ryan"}); 2 db.person.find({"name":"ryan"});
喜歡請微信掃描下面二維碼,關注我公衆號--「精修Java」,作一些實戰項目中的問題和解決方案分享。