一、什麼是MongoDB
MongoDB是由C++編寫的,是一個基於分散式檔案儲存的開源資料庫系統
在高負載的情況下,新增更多的節點,可以保證伺服器的效能
MongoDB為web應用提供可擴充套件的高效能資料儲存解決方案
二、MongoDB特點
1、MongoDB提供了一個面向文件儲存,基本思路是將原來的“行”的概念換成了更加領過的“文件”模型,一條記錄可以表示非常複雜的層次關係
2、MongoDB支援豐富的查詢表示式,查詢指令是json形式的標記,可以輕易查詢文件中巢狀的物件和列表
3、非常容易擴充套件,擴充套件叢集后還可以實現叢集中的資料的負載均衡。
4、MongoDB支援各種程式語言,比如python、Java、c++、c、php、c#、ruby、JavaScript等
5、豐富的功能,包括索引、儲存JavaScript、聚合、固定集合、檔案儲存等功能
6、方便管理,處理啟動資料庫服務以外,記過沒有其他什麼必要的操作。管理叢集只需要知道有哪個新增的節點即可,自動繼承和配置新節點
三、MongoDB概念
在MongoDB中的基本概念是文件、集合、資料庫
資料庫:
* 一個MongoDB可以建立多個資料庫
* MongoDB的預設資料庫是‘db’,該資料庫在data目錄
* MongoDB的單個例項可以容納多個獨立資料庫,每一個資料庫都有自己集合和許可權,不同資料庫放在不同的檔案中
資料庫命名規則:
資料庫名可以是可以滿足以下條件的任意UTF-8字串
- 不能是空字串(“”)
- 不得含有‘ ’(空格)、$、/、和 .
- 應該全部小寫
- 最多64位元組
有一些資料庫名是保留的,可以直接訪問這些有特殊作用的資料庫。
admin:從許可權的角度看,這個是`root`資料庫。要是將一個使用者新增到這個資料庫,這個使用者自動繼承所有的資料庫的許可權。一些特定的伺服器命令也只能從這個資料庫執行,比如列出所有的資料庫或者關閉資料庫。
local:這個資料永遠不會被複制,可以用來儲存限於本地單臺伺服器的任意集合
config:當MongoDB用於分片設定時,config資料庫在內部使用,用於儲存分片的相關資訊。
文件:
文件相當於Mysql的資料行。文件是一組鍵值對(BSON)。MongoDB的文件不需要設定相同的欄位,並且相同欄位不需要相同的資料型別
例如:{“name”:“月光男神”, “age”:“18”}
注意:
1、文件中的鍵值對是有序的
2、文件中的值不僅可以是在雙引號的字串,還可以是其他資料型別
3、MongoDB區分型別和大小寫
4、MongoDB的文件不能有重複的鍵
5、文件的鍵是字串,除了少數例外情況,鍵可以使用任意UTF-8字元
文件鍵命名規範:
1、鍵不能含有 (空字元)。這個字元用來表示鍵的結尾
2、.和$有特別的意義,只有在特定環境下才能使用
3、以”_”開頭的鍵是保留的
集合
集合相當於mysql中的表,集合存在於資料庫中,集合沒有固定結構,可以插入不同型別和格式的資料。
集合命名規範:
集合名不能是空字串。
集合名不能含有 字元(空字元),這個字符集表示集合名的結尾。
集合名不能以“system”開頭,這是為系統集合保留的字首
使用者建立的集合的名字不能含有保留字元。千萬不要出現$。