一. 簡介
1.什么是MongoDB?
MongoDB和MySQL一樣都是數(shù)據(jù)庫, 都是存儲數(shù)據(jù)的倉庫,
不同的是MySQL是關系型數(shù)據(jù)庫, 而MongoDB是非關系型數(shù)據(jù)庫
MongoDB是NoSQL類型數(shù)據(jù)庫, NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。
MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。
MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
2.什么是非關系型數(shù)據(jù)庫?
在'關系型數(shù)據(jù)庫'中, 數(shù)據(jù)都是存儲在表中的, 對存儲的內(nèi)容有嚴格的要求
因為在創(chuàng)建表的時候我們就已經(jīng)規(guī)定了表中有多少個字段
已經(jīng)規(guī)定了每個字段將來要存儲什么類型數(shù)據(jù),
已經(jīng)規(guī)定了每個字段將來是否可以為空,是否必須唯一等等
在'非關系型數(shù)據(jù)庫'中, 沒有表概念, 所以存儲數(shù)據(jù)更加靈活
因為不需要創(chuàng)建表,所以也沒有規(guī)定有哪些字段,
也沒有規(guī)定每個字段數(shù)據(jù)類型,
也沒有規(guī)定每個字段將來是否可以為空,是否必須唯一等等
關系型數(shù)據(jù)庫'由于操作的都是結(jié)構(gòu)化的數(shù)據(jù), 所以我們需要使用結(jié)構(gòu)化語言SQL來操作
- '非關系型數(shù)據(jù)庫'由于數(shù)據(jù)沒有嚴格的結(jié)構(gòu)要求, 所以無需使用SQL來操作
3.什么是MongoDB?
存儲文檔(BSON)的非關系型數(shù)據(jù)庫
例如在MySQL中:
|--------------------------------------------------------|
| name(varchar(255) not null) | age(int unique) |
|--------------------------------------------------------|
我們可以把 'zs', 33 保存到表中
但是我們不能將 33, 'zs' 保存到表中
但我們不能能將 null, 33 保存到表中
但是我們不能將 'zs', 33, '男' 保存到表中
但是我們不能再次將 'zs', 33 保存到表中
例如在MongoDB中:
我們可以把 {name: 'zs', age: 33}; 保存到集合中
我們也可以把 {name: 33, age: 'zs'}; 保存到集合中
我們也可以把 {name: null, age: 33}; 保存到集合中
我們也可以把 {name: 'zs', age: 33, gender:'男'}; 保存到集合中
但是我們可以再次將 {name: 'zs', age: 33}; 保存到集合中
-
'非關系型數(shù)據(jù)庫'可以看做是'關系型數(shù)據(jù)庫'的功能閹割版本,
通過減少用不到或很少用的功能,從而提升數(shù)據(jù)庫的性能
4.MongoDB是如何存儲文檔的?
MySQL中所有的數(shù)據(jù)都是存儲在表中的, 而MongoDB中所有的數(shù)據(jù)都是存儲在集合中的
5.企業(yè)開發(fā)如何選擇?
- 關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫之間并不是替代關系, 而是互補關系
所以在企業(yè)開發(fā)中大部分情況是結(jié)合在一起使用.
- 對于數(shù)據(jù)模型比較簡單、數(shù)據(jù)性能要求較高、數(shù)據(jù)靈活性較強的數(shù)據(jù), 我們存儲到非關系型數(shù)據(jù)庫中
相反則存儲到關系型數(shù)據(jù)庫中
- 具體使用: 會在項目中實現(xiàn)
二. 安裝MongoDB
1.安裝MongoDB
MongoDB版本號: 偶數(shù)為穩(wěn)定版(推薦), 基數(shù)為開發(fā)版
MongoDB對32位操作系統(tǒng)支持不佳, 不推薦在32位系統(tǒng)上使用, 并且官方已經(jīng)停更32位安裝包
2.安裝步驟
2.1全程下一步
2.2配置環(huán)境變量, 將MongoDB的bin目錄配置到系統(tǒng)變量Path中
2.3在終端中通過 mongod 啟動 MongoDB
2.4.測試連接
mongo
三. MongoDB 的基本操作
https://docs.mongodb.com/manual/
https://www.mongodb.org.cn/tutorial/
1.連接MongoDB服務器
通過mongo連接MongoDB服務器
2.查看數(shù)據(jù)庫
show dbs
和MySQL中的 show databases; 指令一樣
3.使用數(shù)據(jù)庫
use 數(shù)據(jù)庫名稱
和MySQL中的 use 指令一樣, 只不過MongoDB中的use數(shù)據(jù)庫不存在會自動創(chuàng)建
4.查看數(shù)據(jù)庫中有哪些集合
show collections
#和MySQL中的 show tables; 指令一樣
5.創(chuàng)建集合
db.createCollection('集合名稱');
和MySQL中的 create table xxx(); 指令一樣
6.插入數(shù)據(jù)
db.集合名稱.insert(文檔對象);
和MySQL中的 insert into xxx values () 指令一樣
7.查詢數(shù)據(jù)
db.集合名稱.find();
#和MySQL中的 select * from xxx; 指令一樣
8.刪除集合
db.集合名稱.drop()
#和MySQL中的 drop table xxx; 指令一樣
9.刪除數(shù)據(jù)庫
db.dropDatabase()
#在哪個數(shù)據(jù)庫中就會刪除哪個數(shù)據(jù)庫
#和MySQL中的 drop database xxx; 指令一樣
10.和MySQL的不同
沒有MySQL中表的概念, 取而代之的是集合
創(chuàng)建集合時不用指定集合中有哪些字段
只要是一個合法的文檔對象都可以往里面存儲