1.mongodb 與 普通sql 之間的抽象類比
2.查詢數(shù)據(jù)庫(kù)相關(guān)命令:
? ?顯示所有數(shù)據(jù)庫(kù):show dbs
? ? 顯示當(dāng)前數(shù)據(jù)庫(kù):db
? ? 使用test數(shù)據(jù)庫(kù):use test
3.MongoDB文檔
? ??文檔是一組鍵值(key-value)對(duì)(即BSON)县貌。MongoDB 的文檔不需要設(shè)置相同的字段凛俱,并且相同的字段不需要相同的數(shù)據(jù)類型搪柑,這與關(guān)系型數(shù)據(jù)庫(kù)有很大的區(qū)別,也是 MongoDB 非常突出的特點(diǎn)收捣。
? 注意:
????? 1. 文檔中的鍵/值對(duì)是有序的。
? ? ?2. 文檔中的值不僅可以是在雙引號(hào)里面的字符串庵楷,還可以是其他幾種數(shù)據(jù)類型(甚至可以是整個(gè)嵌入的文檔)罢艾。
? ? ?3. MongoDB區(qū)分類型和大小寫。
? ? ?4. MongoDB的文檔不能有重復(fù)的鍵尽纽。
? ? ?5.文檔的鍵是字符串咐蚯。除了少數(shù)例外情況,鍵可以使用任意UTF-8字符弄贿。
文檔鍵命名規(guī)范:
? ?1. 鍵不能含有\(zhòng)0 (空字符)春锋。這個(gè)字符用來(lái)表示鍵的結(jié)尾。
? ?2.? .和$有特別的意義挎春,只有在特定環(huán)境下才能使用看疙。
? ?3.? 以下劃線"_"開頭的鍵是保留的(不是嚴(yán)格要求的)。
4.MongoDB集合
????集合就是 MongoDB 文檔組直奋,類似于 RDBMS (關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng):Relational Database Management System)中的表能庆。
????集合存在于數(shù)據(jù)庫(kù)中,集合沒(méi)有固定的結(jié)構(gòu)脚线。
????這意味著你在對(duì)集合可以插入不同格式和類型的數(shù)據(jù)搁胆,但通常情況下我們插入集合的數(shù)據(jù)都會(huì)有一定的關(guān)聯(lián)性。
? ??合法的集合名
? ? ? ? 1.集合名不能是空字符串""邮绿。
? ? ? ? 2.集合名不能含有\(zhòng)0字符(空字符)渠旁,這個(gè)字符表示集合名的結(jié)尾。
? ? ? ? 3.集合名不能以"system."開頭船逮,這是為系統(tǒng)集合保留的前綴顾腊。
? ? ? ? 4.用戶創(chuàng)建的集合名字不能含有保留字符。有些驅(qū)動(dòng)程序的確支持在集合名里面包含挖胃,這是因?yàn)槟承┫到y(tǒng)生成的集合中包含該字符杂靶。除非你要訪問(wèn)這種系統(tǒng)創(chuàng)建的集合梆惯,否則千萬(wàn)不要在名字里出現(xiàn)$。
5. capped collections
????Capped collections 就是固定大小的collection吗垮。
? ??它有很高的性能以及隊(duì)列過(guò)期的特性(過(guò)期按照插入的順序). 有點(diǎn)和 "RRD" 概念類似垛吗。
????Capped collections是高性能自動(dòng)的維護(hù)對(duì)象的插入順序。
????它非常適合類似記錄日志的功能 和標(biāo)準(zhǔn)的collection不同烁登,你必須要顯式的創(chuàng)建一個(gè)capped collection怯屉, 指定一個(gè)collection的大小,單位是字節(jié)饵沧。
????collection的數(shù)據(jù)存儲(chǔ)空間值提前分配的锨络。
????要注意的是指定的存儲(chǔ)大小包含了數(shù)據(jù)庫(kù)的頭信息。
????在capped collection中捷泞,你能添加新的對(duì)象足删。
????能進(jìn)行更新,然而锁右,對(duì)象不會(huì)增加存儲(chǔ)空間失受。如果增加,更新就會(huì)失敗 咏瑟。
????數(shù)據(jù)庫(kù)不允許進(jìn)行刪除拂到。使用drop()方法刪除collection所有的行。
????注意: 刪除之后码泞,你必須顯式的重新創(chuàng)建這個(gè)collection兄旬。
????在32bit機(jī)器中,capped collection最大存儲(chǔ)為1e9( 1X109)個(gè)字節(jié)余寥。
6.特殊的數(shù)據(jù)類型
主鍵ObjectId:
? ??MongoDB 中存儲(chǔ)的文檔必須有一個(gè) _id 鍵领铐。這個(gè)鍵的值可以是任何類型的,默認(rèn)是個(gè) ObjectId 對(duì)象
? ??ObjectId 類似唯一主鍵宋舷,可以很快的去生成和排序绪撵,包含 12 bytes,含義是:
????前 4 個(gè)字節(jié)表示創(chuàng)建?unix時(shí)間戳,格林尼治時(shí)間?UTC?時(shí)間祝蝠,比北京時(shí)間晚了 8 個(gè)小時(shí)
????接下來(lái)的 3 個(gè)字節(jié)是機(jī)器標(biāo)識(shí)碼
????緊接的兩個(gè)字節(jié)由進(jìn)程 id 組成 PID
????最后三個(gè)字節(jié)是隨機(jī)數(shù)
字符串:
? ??BSON 字符串都是 UTF-8 編碼音诈。
日期:
????表示當(dāng)前距離 Unix新紀(jì)元(1970年1月1日)的毫秒數(shù)。日期類型是有符號(hào)的, 負(fù)數(shù)表示 1970 年之前的日期绎狭。
> var mydate1 = new Date() //格林尼治時(shí)間
> mydate1ISODate("2018-03-04T14:58:51.233Z")
? ??這樣創(chuàng)建的時(shí)間是日期類型细溅,可以使用 JS 中的 Date 類型的方法。
????返回一個(gè)時(shí)間類型的字符串:
> var mydate1str = mydate1.toString()
> mydate1str
? ? 還可以
Date()