入門(mongodb權威指南第二章)

mongodb的基本概念 javascript

  • 文檔時mongodb中數據的基本單元,相似於關係數據庫中的行(可是比行更復雜)
  • 集合能夠看作是沒有模式的表
  • mongodb的單個實例能夠容納多個獨立的數據庫,每個都擁有本身的權限和集合
  • mongodb自帶簡介單功能強大的Javascript shell ,管理mongodb實例和操做數據
  • 每個文檔都有一個特殊的鍵「_id」,他在文檔所處的集合中是惟一的

2.1 文檔 java

     文檔時mongodb的核心概念,多個鍵及其關聯的值有序的放置在一塊兒即是文檔。每種編程語言表示文檔的方式不同,但大多編程語言都有相同的一中數據結構,好比:映射、散列、和字典。 web

    例如:javascript中,文檔表示位對象: 正則表達式

         {"greeting":"Hello world !"}    mongodb

         {"greeting":"Hello world !","foo":3} shell

          這個例子很好的解釋了幾種概念: 數據庫

  • 文檔中的鍵/值對是有序的(一般鍵的順序不是很重要,有的編程語言並不關心)
  • 文檔中的值不只是字符串,還能夠是其餘類型

    文檔中的鍵是字符串,除了少數狀況,鍵能夠是任意的UTF-8字符 編程

  •  鍵不能還有空字符\0,個字符用來表示見得結束
  • . 和 $ 是有特別的意義。保留字
  • 如下劃線開頭的鍵」_「是保留的(可是不嚴格要求)

    mongodb不但區分類型,也區分大小寫,而且不能有重複的鍵 json

     {"foo":"3"} 數組

     {"foo":3} 

     {"Foo":"3"}  兩兩不相等

2.2 集合

     集合就是一組文檔,相似於關係數據庫的表。

    2.2.1 無模式

    2.2.2 命名

       能夠經過名字表示集合 集合名UTF-8

  •        不能是空字符串
  • 不還有\0
  • 不能以system. 開頭,這是系統集合保留的前綴
  • 不能還有保留字符$(有寫驅動支持,但最好不要這樣寫)

      子集合

     組織集合的一種慣例:使用」.「字符按ing用命名空間劃分的子集合

     例如博客應用可能包還兩個集合:bog.posts blog.auth,blog(根本就不須要存在),與子集合沒有任何關係

      子集合沒有特別的地方,可是頗有用,不少mongodb工具中都包含子集合:

  •      GridFS
  • mongodb的web控制檯
  • 絕大多數驅動程序提供語法糖

     推薦使用子集合。

2.3 數據庫

    多個集合組成數據庫

   命名規範:

  •    不能包含空字符串」「
  •    不能包含‘’(空格) '   .   /   \   \0(空字符)
  • 應所有小寫
  • 最多64字節

   數據庫名最終會變成文件系統裏的文件,所以這麼限制。

  保留的數據庫名:(能夠直接訪問)

  •     admin
  • local  永遠不會被複制,存儲限於本地單臺服務器的任意集合
  • config 當mongodb用於分片設置時,config數據庫在內部使用,用於保存分片的相關信息

    命名空間:把數據庫的名字放在集合名字前面,獲得集合的徹底限定名,稱爲命名空間,長度不超過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基本的鍵值對的基礎上,添加了其餘一些數據類型,在不一樣的編程語言下類想的表現可能有差別。

  • null  表示空值或者不存在的字段   {"x:null}
  • 布爾  true/false  {"x":true}
  • 32位整數

        shell中這個型不可用,js僅支持64位浮點數,因此32位整數會被自動轉換

  • 64位整數

       shell不支持這個類型,shell會用一個特殊的內嵌文檔來顯示64位整數

  • 64位浮點數

      shell 中的類型都是這個類型

     {"x":3.14} {"x":3}

  • 字符串

      UTF-8字符串

  • 符號

       shell不支持這種類型,將數據庫中的符號轉換爲字符串

  • 對象id

       對象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

相關文章
相關標籤/搜索