mongodb的基本概念 javascript
2.1 文檔 java
文檔時mongodb的核心概念,多個鍵及其關聯的值有序的放置在一塊兒即是文檔。每種編程語言表示文檔的方式不同,但大多編程語言都有相同的一中數據結構,好比:映射、散列、和字典。 web
例如:javascript中,文檔表示位對象: 正則表達式
{"greeting":"Hello world !"} mongodb
{"greeting":"Hello world !","foo":3} shell
這個例子很好的解釋了幾種概念: 數據庫
文檔中的鍵是字符串,除了少數狀況,鍵能夠是任意的UTF-8字符 編程
mongodb不但區分類型,也區分大小寫,而且不能有重複的鍵 json
{"foo":"3"} 數組
{"foo":3}
{"Foo":"3"} 兩兩不相等
2.2 集合
集合就是一組文檔,相似於關係數據庫的表。
2.2.1 無模式
2.2.2 命名
能夠經過名字表示集合 集合名UTF-8
子集合
組織集合的一種慣例:使用」.「字符按ing用命名空間劃分的子集合
例如博客應用可能包還兩個集合:bog.posts blog.auth,blog(根本就不須要存在),與子集合沒有任何關係
子集合沒有特別的地方,可是頗有用,不少mongodb工具中都包含子集合:
推薦使用子集合。
2.3 數據庫
多個集合組成數據庫
命名規範:
數據庫名最終會變成文件系統裏的文件,所以這麼限制。
保留的數據庫名:(能夠直接訪問)
命名空間:把數據庫的名字放在集合名字前面,獲得集合的徹底限定名,稱爲命名空間,長度不超過121字節,在時間使用中應當小於100字節
2.4 啓動
mongodb做爲通常網絡服務器來運行,客戶端能夠鏈接到該服務器並執行操做
啓動命令:mongod
2.5 mongodb Shell
2.6 數據類型
2.6.1 基本數據類型
mongodb的文檔相似於JSON,在概念上和javascript的對象神似。(http://www.json.org/)
son:僅包含6中數據類型:null 布爾 數字 字符串 數組 對象
好處:易於理解 已與解析 易於記憶
缺點:日期 函數 正則 只有一種數字類型
mongodb在保留json基本的鍵值對的基礎上,添加了其餘一些數據類型,在不一樣的編程語言下類想的表現可能有差別。
shell中這個型不可用,js僅支持64位浮點數,因此32位整數會被自動轉換
shell不支持這個類型,shell會用一個特殊的內嵌文檔來顯示64位整數
shell 中的類型都是這個類型
{"x":3.14} {"x":3}
UTF-8字符串
shell不支持這種類型,將數據庫中的符號轉換爲字符串
對象id是文檔的12字節的惟一ID {"x":ObjectId()}
存儲從標準紀元開始的毫秒數,不存儲時區
{"x":new Date()}
文檔能夠包含,採用js語法
{"x":/foobar/i}
文檔中能夠包含javascript代碼
{"x":function(){}}
二進制數據能夠有任意字節的串組成,shell中沒法使用
BJSON包含一個特殊類型,能夠表示可能的最大值,shell中沒有這個類型
BJSON包含一個特殊類型,能夠表示可能的最小值,shell中沒有這個類型
文檔中可使用未定義類型(js中null和undefined是不一樣的類型)
{」x":undefined}
值得集合或者列表能夠表示位數組
{"x":["a","b","c"]}
文檔能夠包含別額的文檔,也能夠做爲值嵌入到符文當中
{"x":{"foo":"bar"}}
2.6.2 數字
javascript只有一種數字類型,而mongodb有三種,shell必須繞過js的限制,默認狀況下,shell中的數字都被mongodb當作是雙精度數。
2.6.3 日期
在javascript中,Date對象用做mongodb的日期類型。
建立一個新的Date對象是,一般會調用new Data() 而不是new Date() ,後者返回字符串,shell中的日期顯示是使用本地時區設置。
2.6.4 數組
數組是一組值,便可以做爲有序對象(列表、站或隊列),也能夠做爲無序對象(集合)來操做。
2.6.5 內嵌文檔
2.6.6 _id和ObjectId