MongooooooooooooooooooooDB入門二:基本概念介紹

來源:互聯網
上載者:User

標籤:blog   http   使用   os   資料   ar   問題   div   

前言

工欲善其事必先利其器。在學習MongoDB之前,需要對MongoDB的一些基本概念有系統的瞭解。

所以,本篇文章主要介紹MongoDB的一些基本概念,這些概念的定義均來自《MongoDB權威指南》,關於此書想要瞭解更多,請點擊此處。

我盡量使用最簡潔的語言來儘可能完整地描述這些基本概念,如有遺漏或不妥之處歡迎指正。

文檔

文檔是MongoDB的核心概念之一。多個索引值對有序地放在一起便是文檔。例如:

{"name":"Jerry","score":80}

這個文檔有2個索引值對,一個是name,其對應的值為"Jerry",另一個是score,其對應的值為“80”。

文檔中的索引值對是有序的,上面的文檔和下面的文檔是完全不同的:

{"score":80,"name":"Jerry"}

文檔中的值不僅可以是雙引號中的字串,也可以是數值,比如上面文檔中的score,還可以是其他幾種資料類型,甚至可以是整個嵌入的文檔(會在後續文章中介紹)。

MongoDB不單區分類型,也區分大小寫,下面2個文檔是不同的:

{"score":80}
{"score":"80"}

下面2個文檔也是不同的:

{"score":80}
{"Score":80}

另一個需要注意的地方是,文檔中的鍵不能重複,例如下面的文檔是不符合規定的:

{"name":"Jerry","score":80,"score":90}
集合

集合也是MongoDB的核心概念之一。集合就是一組文檔。如果說文檔類似於關係型資料庫的記錄的話,那集合就類似於關係型資料庫的表。

集合中的文檔可以是多式多樣的,例如下面的2個文檔可以同屬於一個集合:

{"name":"長安亂","press":"春風文藝出版社","date":"2004-08-01"}{"author":"韓寒"}

根據文檔的概念,我們知道文檔中的鍵是不能重複的,那集合中的文檔是否可以重複?

答案是肯定的,集合中可以放置任意的文檔,例如下面的集合是完全符合規定的:

{"name":"長安亂","press":"春風文藝出版社","date":"2004-08-01"}{"name":"長安亂","press":"春風文藝出版社","date":"2004-08-01"}

因為集合中可以放置任意的文檔,那隨之而來一個問題,還有必要使用多個集合嗎?

答案也是肯定的,理由如下:

  • 把各種各樣的文檔都混在一個集合裡面,無論對於開發人員還是管理員來說都是噩夢。開發人員要麼確保每次查
    詢只返回需要的文件類型,要麼讓執行查詢的應用程式來從這些文檔中篩選出所需要的類型。如果查詢書的
    名字還要剔除那些含有作者資料的文檔,就很令人惱火。

  • 在一個集合裡面查詢特定類型的文檔在速度上也很不划算,分開做多個集合要快得多。
    從只含書籍資訊的集合中查詢出幾本書,要比從含有書和作者資訊的集合中查詢消耗更少的磁碟尋道操作。

  • 當建立索引的時候,文檔會有附加的結構(尤其是有唯一索引的時候)。索引是按照集合來定義的,把同種類
    型的文檔放入同一個集合裡面,可以使索引更加有效。

以上3點理由摘自《MongoDB權威指南》,並稍作了修改。

子集合

在集合的命名中引入"."來組織集合是一個慣例,例如blog.posts和blog.authors,posts和authors可以看作blog的子集合,這裡blog本身可以是一個集合,也可以根本就不存在。

資料庫

MongoDB中多個文檔組成集合,同樣多個集合可以組成資料庫。一個MongoDB執行個體可以承載多個資料庫,它們之間可視為完全獨立的。

在對資料庫命名的時候,應避免使用以下被保留的資料庫名:

  • admin  

       從許可權的角度來看,這是一個“root"資料庫。如果將一個使用者添加到這個資料庫,這個使用者就自動繼承所有資料庫的許可權。一些特定的伺服器端命也只能從這個資料庫運行,比如列出所有的資料庫或關閉伺服器。

  • local

   這個資料庫永遠不會被複製,可以用來儲存限於本地單台伺服器的任意集合。

  • config

   當Mongo用於分區設定時,config資料庫在內部使用,用於儲存分區的相關資訊。

把資料庫的名字放到集合名稱之前,就得到集合的完全限定名,稱為命名空間。例如cms資料庫中的集合blog.posts的命名空間為cms.blog.posts。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.