MongoDB快速入門(mén)
如果把mysql比作大名鼎鼎的c語(yǔ)言;那么mongodb就是簡(jiǎn)單友好的python
Mysql數(shù)據(jù)庫(kù)有什么缺陷?
- 關(guān)系型數(shù)據(jù)庫(kù)表結(jié)構(gòu)復(fù)雜,擴(kuò)展性差;
- 需要較高的學(xué)習(xí)成本,復(fù)雜的表結(jié)構(gòu)會(huì)產(chǎn)生更高的維護(hù)成本
關(guān)系型數(shù)據(jù)庫(kù)的"連接查詢"會(huì)影響查詢效率?
- 會(huì)使查詢效率變低
連接查詢效率低,為什么還要分表?
- 分表可以減少數(shù)據(jù)冗余
數(shù)據(jù)庫(kù)可以不使用復(fù)雜的表結(jié)構(gòu)么?
- 可以,但要多消耗一些存儲(chǔ)空間,mongodb(非關(guān)系型數(shù)據(jù)庫(kù))就為此而生
與Mysql相比,Mongodb簡(jiǎn)單極了!
<1>mongo默認(rèn)開(kāi)啟了新手模式,登錄無(wú)需鍵入用戶名和密碼,只需要在終端輸入
mongo
即可進(jìn)入交互環(huán)境<2> mongo沒(méi)有"表"的概念,也不用設(shè)計(jì)表(mongo使用"集合"存儲(chǔ) 多個(gè)"鍵值對(duì)",取代表的功能)
<3> mongo有數(shù)據(jù)庫(kù)的概念,但可以不經(jīng)創(chuàng)建,直接使用(類似vim編輯器創(chuàng)建新文件,如果新文件中未添加數(shù)據(jù),則新文件不會(huì)保存到硬盤(pán);與vim不同的是,如果用戶添加了數(shù)據(jù),vim需要手動(dòng)確認(rèn),保存文件,mongo會(huì)自動(dòng)保存數(shù)據(jù)到相應(yīng)的數(shù)據(jù)庫(kù))
<4>mongo沒(méi)有mysql中"記錄"的概念,mongo使用"文檔"存儲(chǔ)任意數(shù)量的"鍵值對(duì)"信息("記錄"中的信息受表中各字段的約束,"文檔"可以存放任意數(shù)量的鍵值對(duì))
<5>mongo無(wú)需手動(dòng)設(shè)置"主鍵",系統(tǒng)會(huì)自動(dòng)為每一個(gè)"文檔"自動(dòng)添加"_id"鍵值對(duì),保證數(shù)據(jù)的唯一性.
關(guān)系型數(shù)據(jù)庫(kù)mysql 與 非關(guān)系型數(shù)據(jù)庫(kù)mongodb 概念對(duì)比
mysql | mongodb |
---|---|
表(table) | 集合(collection) |
記錄(row) | 文檔(document) |
主鍵(primary key) 手動(dòng)設(shè)置
|
_id 自動(dòng)生成
|
MongoDB基本用法
一.數(shù)據(jù)庫(kù)管理系統(tǒng)
1.服務(wù)端
-
(1)開(kāi)啟服務(wù)
-
示例
sudo service mongod start
-
-
(2)重啟服務(wù)
-
示例
sudo service mongod restart
-
-
(3)關(guān)閉服務(wù)
-
示例
sudo service mongod stop
-
2.客戶端
-
(1)登錄數(shù)據(jù)庫(kù)
-
示例
mongo
-
-
(2)退出數(shù)據(jù)庫(kù)
-
示例
exit
-
二.數(shù)據(jù)庫(kù)
1.查看數(shù)據(jù)庫(kù)
-
示例
show dbs
2.使用數(shù)據(jù)庫(kù)
-
格式
- use 數(shù)據(jù)庫(kù)名
-
示例
use students
3.查看當(dāng)前數(shù)據(jù)庫(kù)
-
示例
db
4.刪除當(dāng)前數(shù)據(jù)庫(kù)
-
示例
db.dropDatabase()
三.集合
1.創(chuàng)建集合
-
格式
- db.createCollection("集合名稱")
-
示例(創(chuàng)建名為
stu
的集合)db.createCollection("stu")
2.查看當(dāng)前數(shù)據(jù)庫(kù)的集合
-
示例
show collections
3.刪除集合
-
格式
- db.drop.集合名()
-
示例(移除名為
stu
的文檔)db.drop.stu()
四.文檔
1.插入文檔
-
格式
- db.集合名.insert({})
-
示例
db.stu.insert({name:"李明",age:18,gender: true,birthday:"1995-12-08",height:186.6})
2.刪除文檔
-
格式
- db.集合名.remove({刪除文檔的條件})
-
示例(移除age=18的文檔)
db.stu.remove({age:{$gt:18}})
3.修改文檔
-
格式
- db.集合名.update({修改文檔的條件},{$set:{需要修改的屬性名:屬性值}}, {multi: ture})
-
示例(將age=17的文檔更新為 age=18)
db.stu.update({age:18},{$set:{age:17}},{multi:true})
4.查詢文檔
-
格式(pretty是為了把結(jié)果格式化為json格式)
- db.集合名.find({查詢文檔的條件}).pretty()
-
示例(篩選age大于10的文檔)
db.stu.find({age:{$gt:10}}).pretty()
MongoDB