mongodb 字段出现次数_MongoDB数据库
內(nèi)容回顧
- Xpath選擇器
不要求記憶,只要混個(gè)眼熟即可
- 基于openpyxl模塊爬取豆瓣電影
單頁爬取
多頁爬取
1.校驗(yàn)請求頭里面是否有User-Agent參數(shù)
請求頭里面加上即可
2.限制IP規(guī)定時(shí)間內(nèi)的訪問次數(shù)
1.人為的加上時(shí)間延遲
在你的程序里面加上time.sleep()讓你的程序間歇一段時(shí)間之后再執(zhí)行
2.IP代理池
- 非關(guān)系型數(shù)據(jù)庫之MongoDB
關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫
常見數(shù)據(jù)庫軟件的端口號
3306 MySQL
6379 redis
27017 MongoDB
今日內(nèi)容概要
- MongoDB下載與安裝
- 基本命令操作
- 賬號創(chuàng)建及權(quán)限管理
- 快捷操作MongoDB軟件
Navicat
Robo 3T
今日內(nèi)容詳細(xì)
MongoDB下載與安裝
百度搜索官網(wǎng)點(diǎn)擊社區(qū)版本(community server)下載即可
安裝步驟可以參考:MongoDB 教程 | 菜鳥教程
1.下載.msi的文件
2.完成后雙擊該文件
custom自定義安裝路徑(放到D、E、F盤的根目錄下)
D:
E:
F:
不要勾選install MongoDB Compass
3.手動在MongoDB文件夾根目錄下(自動創(chuàng)建了就不要?jiǎng)?chuàng)了 版本原因)
1.創(chuàng)建data文件夾
然后再data文件夾內(nèi)創(chuàng)建db文件夾
2.創(chuàng)建log目錄
然后在log目錄下創(chuàng)建mongod.log文件
4.將mongod.exe文件所在的路徑添加到環(huán)境變量中
mongod.exe mongodb數(shù)據(jù)庫的服務(wù)端
mysqld.exe MySQL數(shù)據(jù)庫的服務(wù)端
5.在MongoDB文件夾根目錄下
創(chuàng)建mongod.cfg文件
在該文件內(nèi)拷貝以下代碼
systemLog:
destination: file
path: "D:MongoDBlogmongod.log"
logAppend: true
storage:
journal:
enabled: true
dbPath: "D:MongoDBdatadb"
net:
bindIp: 0.0.0.0
port: 27017
setParameter:
enableLocalhostAuthBypass: false
6.系統(tǒng)服務(wù)制作
一定要用管理員身份打開cmd終端
mongod --config "D:MongoDBmongod.cfg" --bind_ip 0.0.0.0 --install
或者直接在命令行指定配置
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:MongoDBlogmongod.log --logappend --dbpath D:MongoDBdatadb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
注意這里--auth如果沒有創(chuàng)建權(quán)限管理就不要加
7.啟動關(guān)閉
net start MongoDB
net stop MongoDB
8.登錄
mongo
MongoDB重要概念
"""
MySQL中三個(gè)重要概念
庫 文件夾
表 文件夾里面的文件
記錄數(shù)據(jù) 文件里面的一行行數(shù)據(jù)
"""
# 查看所有的庫
show databases; # MySQL命令
show dbs # MongoDB命令
SQL術(shù)語/概念 MongoDB術(shù)語/概念 解釋/說明
database database 數(shù)據(jù)庫
table collection 數(shù)據(jù)庫表/集合
row document 數(shù)據(jù)記錄行/文檔
column field 數(shù)據(jù)字段/域
index index 索引
inner join 表連接,MongoDB不支持
primary key primary key MongoDB自動將_id字段設(shè)置為主鍵
庫的增刪改查
1.創(chuàng)建
use 庫名 # use db1
# 庫不存在會自動創(chuàng)建(臨時(shí)先創(chuàng)建在內(nèi)存中) 但是只有當(dāng)你真正在該庫里面產(chǎn)生數(shù)據(jù)之后才會刷到硬盤(再保存到硬盤) 如果不錄入數(shù)據(jù)則創(chuàng)建的庫就沒了 所以用show dbs可能查看不到
2.查看
show dbs
3.改(忽略)
4.刪
要先有數(shù)據(jù)的庫才能刪除
use db1
db.db1.insert({'name':'jason'})
db.dropDatabase() (這里敲代碼時(shí)tab鍵補(bǔ)全)
集合的增刪改查
1.查
show tables
2.增
db.集合名 # 規(guī)律跟 use 庫名一致 里面沒有數(shù)據(jù)是show不出來的 db是關(guān)鍵字
db.createCollection(集合名) # db.createCollection('t2') # 直接寫入硬盤
3.改(忽略)因?yàn)闆]有固定表結(jié)構(gòu)沒有字段 字段名 字段類型
4.刪
db.集合名.drop() # db.t2.drop()
文檔增刪改查
1.增
單條
db.集合名.insert({...}) # db.t1.insert({'name':'jason'})
等價(jià)于
db.集合名.save({...})
多條
db.集合名.insert([{...},{...},{...},{...}])
2.查
查詢所有
db.集合名.find() # db.t1.find()
3.改
db.集合名.update(
篩選條件
新的內(nèi)容
)
db.t1.update({'name':'jason1'},{$set:{'name':'jason111'}})
4.刪
db.集合名.remove(
篩選條件
)
db.t1.remove({'name':'jason2'})
#1、刪除多個(gè)中的第一個(gè)
db.t1.deleteOne({ 'age': 8 })
#2、刪除國家為China的全部
db.t1.deleteMany( {'addr.country': 'China'} )
#3、刪除全部
db.t1.deleteMany({})
用戶創(chuàng)建及權(quán)限管理
正常的數(shù)據(jù)庫軟件都應(yīng)該有用戶及對應(yīng)的權(quán)限管理
不可能所有人都是管理員都可以對所有的數(shù)據(jù)進(jìn)行操作
有些用戶只可以查看,有些用戶可以修改,有些用戶可以刪除...
管理員賬戶需要在admin數(shù)據(jù)庫下創(chuàng)建
1.切換到admin數(shù)據(jù)庫下
use admin
2.創(chuàng)建賬戶并且賦予權(quán)限
db.createUser(
{
user: "root",
pwd: "123",
roles: [ { role: "root", db: "admin" } ]
}
)
其他用戶在test數(shù)據(jù)庫下創(chuàng)建
1.切換到test數(shù)據(jù)庫下
use test
2.創(chuàng)建賬戶并賦予權(quán)限
db.createUser(
{
user: "jason",
pwd: "123",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "db1" } ]
}
)
'''上述賬戶都可以創(chuàng)建多個(gè)'''
先停止服務(wù)
net stop MongoDB
再移除服務(wù)
mongod --remove
再次添加
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:MongoDBlogmongod.log --logappend --dbpath D:MongoDBdata --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
再次啟動
net start MongoDB
兩種驗(yàn)證方式
1.直接在登錄的時(shí)候驗(yàn)證
mongo -u "root" -p "123" --port 27017 --authenticationDatabase "admin"
2.進(jìn)入之后再驗(yàn)證
mongo
use admin
db.auth("root","123")
注意在切換賬戶時(shí)普通用戶不能直接切換到管理員身份需要exit退出后重新進(jìn)入
作業(yè)
1.記憶關(guān)系型數(shù)據(jù)庫的ACID四大特性
- 原子性(Atomicity):化學(xué)中的原子指不可再分的基本微粒,數(shù)據(jù)庫中原子性強(qiáng)調(diào)事務(wù)是一個(gè)不可分割的整體,事務(wù)開始后所有操作要么全部成功,要么全部失敗,不可能停滯在中間某個(gè)環(huán)節(jié)。如果事務(wù)執(zhí)行過程中出錯(cuò)就會回滾到事務(wù)開始前的狀態(tài),所有的操作就像沒有發(fā)生一樣不會對數(shù)據(jù)庫有任何影響。
- 一致性(Consistency):事務(wù)必須使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變換到另一個(gè)一致性狀態(tài),即一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。拿轉(zhuǎn)賬來說,假設(shè)用戶A和用戶B兩者的錢加起來一共是5000,那么不管A和B之間如何轉(zhuǎn)賬,轉(zhuǎn)幾次賬,事務(wù)結(jié)束后兩個(gè)用戶的錢相加起來應(yīng)該還是5000,這就是事務(wù)的一致性。
- 隔離性(Isolation):當(dāng)多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫時(shí),比如操作同一張表時(shí),數(shù)據(jù)庫為每一個(gè)用戶開啟的事務(wù),不能被其他事務(wù)的操作所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離,比如A正在從一張銀行卡中取錢,在A取錢的過程結(jié)束前,B不能向這張卡轉(zhuǎn)入錢。
- 持久性(Durability):一個(gè)事務(wù)一旦被提交,則對數(shù)據(jù)庫的所有更新將被保存到數(shù)據(jù)庫中,不能回滾。
2.自己總結(jié)歸納數(shù)據(jù)庫三大范式
第一范式(保證每列具有原子性,列不可再分)。
第二范式( 確保表中的每一列都和主鍵相關(guān))
第三范式 (數(shù)據(jù)庫中的每一列和主鍵列直接相關(guān)而不是間接相關(guān))
3.自己獨(dú)立完成數(shù)據(jù)庫的安裝并創(chuàng)建兩個(gè)管理員賬戶三個(gè)普通用戶賬戶
三個(gè)普通賬戶各自權(quán)限都不一致
總結(jié)
以上是生活随笔為你收集整理的mongodb 字段出现次数_MongoDB数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux docker安装_Linux
- 下一篇: fastai学习笔记——安装