素材牛
關于mongoDB 4.X的簡易使用。
 aaron  分類:Node.js  人氣:247  回帖:3  發布于5月前 收藏此帖(0)

MongoDB 4.03簡易使用教程

首先推薦一款mongodb可視化工具:Robo 3t 下載鏈接為 https://robomongo.org/,然后瞅一眼數據庫的使用排名,說明學習MongoDB是非常有必要的

MongoDB 概念解析

不管我們學習什么數據庫都應該學習其中的基礎概念,在mongodb中基本的概念是文檔、集合、數據庫,下面我們挨個介紹。

下表將幫助您更容易理解Mongo中的一些概念:

1、文檔是MongoDB的核心概念。文檔就是鍵值對的一個有序集{'msg':'hello','foo':3}。類似于python中的有序字典。

1
2
3
4
5
6
7
8
9
10
11
需要注意的是:
#1、文檔中的鍵/值對是有序的。
#2、文檔中的值不僅可以是在雙引號里面的字符串,還可以是其他幾種數據類型(甚至可以是整個嵌入的文檔)。
#3、MongoDB區分類型和大小寫。
#4、MongoDB的文檔不能有重復的鍵。
#5、文檔中的值可以是多種不同的數據類型,也可以是一個完整的內嵌文檔。文檔的鍵是字符串。除了少數例外情況,鍵可以使用任意UTF-8字符。
文檔鍵命名規范:
#1、鍵不能含有\0 (空字符)。這個字符用來表示鍵的結尾。
#2、.和$有特別的意義,只有在特定環境下才能使用。
#3、以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)。

2、集合就是一組文檔。如果將MongoDB中的一個文檔比喻為關系型數據的一行,那么一個集合就是相當于一張表

1
2
3
4
5
6
7
8
9
10
11
#1、集合存在于數據庫中,通常情況下為了方便管理,不同格式和類型的數據應該插入到不同的集合,但其實集合沒有固定的結構,這意味著我們完全可以把不同格式和類型的數據統統插入一個集合中。
#2、組織子集合的方式就是使用“.”,分隔不同命名空間的子集合。
比如一個具有博客功能的應用可能包含兩個集合,分別是blog.posts和blog.authors,這是為了使組織結構更清晰,這里的blog集合(這個集合甚至不需要存在)跟它的兩個子集合沒有任何關系。
在MongoDB中,使用子集合來組織數據非常高效,值得推薦
#3、當第一個文檔插入時,集合就會被創建。合法的集合名:
集合名不能是空字符串""。
集合名不能含有\0字符(空字符),這個字符表示集合名的結尾。
集合名不能以"system."開頭,這是為系統集合保留的前綴。
用戶創建的集合名字不能含有保留字符。有些驅動程序的確支持在集合名里面包含,這是因為某些系統生成的集合中包含該字符。除非你要訪問這種系統創建的集合,否則千萬不要在名字里出現$。

3、數據庫:在MongoDB中,多個文檔組成集合,多個集合可以組成數據庫

1
2
3
4
5
6
7
8
9
10
數據庫也通過名字來標識。數據庫名可以是滿足以下條件的任意UTF-8字符串:
#1、不能是空字符串("")。
#2、不得含有' '(空格)、.、$、/、\和\0 (空字符)。
#3、應全部小寫。
#4、最多64字節。
有一些數據庫名是保留的,可以直接訪問這些有特殊作用的數據庫。
#1、admin: 從身份認證的角度講,這是“root”數據庫,如果將一個用戶添加到admin數據庫,這個用戶將自動獲得所有數據庫的權限。再者,一些特定的服務器端命令也只能從admin數據庫運行,如列出所有數據庫或關閉服務器
#2、local: 這個數據庫永遠都不可以復制,且一臺服務器上的所有本地集合都可以存儲在這個數據庫中
#3、config: MongoDB用于分片設置時,分片信息會存儲在config數據庫中

4、強調:把數據庫名添加到集合名前,得到集合的完全限定名,即命名空間

1
2
3
例如:
如果要使用cms數據庫中的blog.posts集合,這個集合的命名空間就是
cmd.blog.posts。命名空間的長度不得超過121個字節,且在實際使用中應該小于100個字節

通過下圖實例,我們也可以更直觀的了解Mongo中的一些概念:

連接數據庫

首先剛安裝完成的mongodb數據庫是沒用用戶的,沒有username和password,連接時直接默認連接即可

直接連接即可,會出現如下結構的數據庫

當然,自動生成的都是System的數據庫,我們自己創建的數據庫是如下結構

驗證和管理用戶角色

關于權限的默認配置

在默認情況下,mongod是監聽在0.0.0.0之上的,任何客戶端都可以直接連接27017,且沒有認證。這樣做的好處是,用戶可以即時上手,不用擔心被一堆配置弄的心煩意亂。然而壞處也是顯而易見,如果直接在公網服務器上如此搭建MongoDB,那么所有人都可以直接訪問并修改數據庫數據了。

默認情況下,mongod也是沒有管理員賬戶的。因此除非你在admin數據庫中使用db.createUser()命令添加了管理員帳號,且使用–auth參數啟動mongod,否則在數據庫中任何人都可以無需認證執行所有命令。包括delete和shutdown。

此外,mongod還會默認監聽28017端口,同樣是綁定所有ip。這是一個mongod自帶的web監控界面。從中可以獲取到數據庫當前連接、log、狀態、運行系統等信息。如果你開啟了–rest參數,甚至可以直接通過web界面查詢數據,執行mongod命令。

其實MongoDB本身有非常詳細的安全配置準則,顯然開發者也是想到了,然而他是將安全的任務推給用戶去解決,這本身的策略就是偏向易用性的,對于安全性,則得靠邊站了。

二、MongoDB用戶類型

MongoDB的用戶分為兩種,一種是admin用戶,另一種是特定數據庫用戶。admin用戶擁有最高的權限,而特定數據庫用戶則只能訪問特定的數據庫。當MongoDB的admin庫里沒有任何用戶的時候,也就是說整個MongoDB沒有一個MongoDB用戶的時候,即便–auth權限需求打開了,用戶還是可以通過localhost界面進入MongoDB進行用戶設置,否則的話整個MongoDB就完全沒法訪問了。而當這個用戶創建完成之后,之后的用戶登錄和操作就需要授權了,不是直接登錄就能使用的了。

MongoDB有一個比較奇怪的設置是,即便是一個admin用戶,授權也必須在admin數據庫下進行,而不能在其他數據庫下進行。而授權之后admin用戶就可以在任何數據庫下進行任何操作了。當然數據庫級別的用戶在他自己的數據庫下授權之后是不能到其他數據庫進行操作的。舉例來說:

> use test
> db.auth(“someAdminUser”, password)

操作失敗,提示還沒有在admin數據庫下對afmin用戶進行授權。

基本數據類型

http://www.cnblogs.com/linhaifeng/articles/8273498.html#_label4

增刪改查

http://www.cnblogs.com/linhaifeng/articles/8273498.html#_label5

pymongo

http://api.mongodb.com/python/current/tutorial.html

 標簽:mongodb

討論這個帖子(3)垃圾回帖將一律封號處理……

Lv5 碼農
aaron 職業無 5月前#1

圖片沒加載出來,尷尬了。。

Lv2 入門
shifei 職業無 5月前#2

學習下!!!!

Lv4 碼徒
tcdiju 職業無 4月前#3
學習下!
 文明上網,理性發言!   ?? 阿里云幸運券,戳我領取
會員賬號
會員密碼
安全驗證
经典黑杰克注册