利用Python操作MongoDB數(shù)據(jù)庫(kù)的詳細(xì)指南
數(shù)據(jù)庫(kù)的分類(lèi)
數(shù)據(jù)庫(kù)可以簡(jiǎn)單的分為 MySQL
和 NOSQL
兩類(lèi)。這里的 NOSQL
不是 NO SQL
的意思,他的意思是 Not Only MySQL
MySQL與NoSQL之間的區(qū)別:
1、MySQL是一個(gè)基于表格設(shè)計(jì)的關(guān)系數(shù)據(jù)庫(kù),而NoSQL本質(zhì)上是非關(guān)系型的基于文檔的設(shè)計(jì)。
2、MySQL數(shù)據(jù)庫(kù),覆蓋了巨大的IT市場(chǎng);具有固定市場(chǎng)的MySQL數(shù)據(jù)庫(kù)包含一個(gè)龐大的社區(qū)。而NoSQL數(shù)據(jù)庫(kù)是最新的到來(lái),與MySQL相比,社區(qū)正在慢慢發(fā)展。
3、MySQL的嚴(yán)格模式限制并不容易擴(kuò)展,而NoSQL可以通過(guò)動(dòng)態(tài)模式特性輕松擴(kuò)展。
4、MySQL中創(chuàng)建數(shù)據(jù)庫(kù)之前需要詳細(xì)的數(shù)據(jù)庫(kù)模型,而在NoSQL數(shù)據(jù)庫(kù)類(lèi)型的情況下不需要詳細(xì)的建模。
5、MySQL提供了大量的報(bào)告工具,可以幫助應(yīng)用程序有效,而NoSQL數(shù)據(jù)庫(kù)缺少用于分析和性能測(cè)試的報(bào)告工具。
6、MySQL是一個(gè)關(guān)系數(shù)據(jù)庫(kù),其設(shè)計(jì)約束靈活性較低;而NoSQL本質(zhì)上是非關(guān)系型的,與MySQL相比,它提供了更靈活的設(shè)計(jì)。
7、MySQL中使用的標(biāo)準(zhǔn)語(yǔ)言是SQL;而NoSQL中缺乏標(biāo)準(zhǔn)的查詢語(yǔ)言。
mongodb是什么
mongodb是一種數(shù)據(jù)庫(kù),它可以儲(chǔ)存鍵值對(duì)類(lèi)型的數(shù)據(jù)(json,字典)。目前流行的數(shù)據(jù)庫(kù)是 MySQL ,但它并不利于初學(xué)者入門(mén)。我之前發(fā)過(guò) Tinydb,Sqlite3 等數(shù)據(jù)庫(kù)的講解,都比較簡(jiǎn)單,那我這次來(lái)發(fā)一下mongodb數(shù)據(jù)庫(kù)。
mongodb 的數(shù)據(jù)庫(kù)、集合
一個(gè)數(shù)據(jù)庫(kù)下可以有多個(gè)集合,集合里存儲(chǔ)數(shù)據(jù)。集合可以理解為 SQL 數(shù)據(jù)庫(kù)中的表。
使用Python操作mongodb
安裝 mongodb
終端運(yùn)行
pip install pymongo
連接數(shù)據(jù)庫(kù)
client = pymongo.MongoClient(host, port)
host
是地址,port
是端口。
切換數(shù)據(jù)庫(kù) 第一種方法
db_name = client['db_name']
其中 db_name
是你的數(shù)據(jù)庫(kù)名。
第二種方法
db_name = client.get_database('db_name')
其中 db_name
是你的數(shù)據(jù)庫(kù)名。
第三種方法
db_name = client.db_name
切換集合
db_name.test
其中 test
是集合名,沒(méi)有這個(gè)集合會(huì)自動(dòng)創(chuàng)建。
添加數(shù)據(jù)
def add_data(data): result = db_name.test.insert_one(data) print(result.inserted_id)
其中 test
是集合名。
添加數(shù)據(jù)用 insert_one
方法。
其中,data 是要插入的數(shù)據(jù),它的類(lèi)型是鍵值對(duì),即 Python 中的字典。這是一條合法的 data
{"name":"XiaoMing","password":123456}
特殊的,如果要插入在指定 id ,可以這樣寫(xiě)
result = db_name.test.insert_one({_id:1,"xxx":"xxx",...})
也可以插入多個(gè),只需要把 data 變成
[{"name":"XiaoMing","password":123456},{"name":"XiaoHong","password":123456}]
刪除數(shù)據(jù)
db.test.remove(查詢表達(dá)式, isJustOne)
查詢表達(dá)式有這些
語(yǔ)法 | 操作 | 格式 |
---|---|---|
$eq | 等于 | {:} |
$lt | 小于 | {:{$lt:}} |
$lte | 小于或等于 | {:{$lte:}} |
$gt | 大于 | {:{$gt:}} |
$gte | 大于或等于 | {:{$gte:}} |
$ne | 不等于 | {:{$ne:}} |
$or | 或 | {$or:[{},{}]} |
$in | 在范圍內(nèi) | {age:{$in:[val1,val2]}} |
$nin | 不在范圍內(nèi) | {age:{$nin:[val1,val2]}} |
例如,刪除 test 集合中 name 是 XiaoMing 的所有數(shù)據(jù)
db.test.remove({<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->name:"XiaoMing"})
修改數(shù)據(jù)
db.collection.update(查詢表達(dá)式,新值,選項(xiàng))
選項(xiàng): {upsert : true/false, multi : ture/false}
- upsert:默認(rèn)為 false , 作用:無(wú)相應(yīng)記錄是否insert,與mysql中的replace同
- multi:默認(rèn)為 false , 作用:是否作用于多條
#替換文檔,將name為zhangsan的第一個(gè)文檔替換為{"name":"lisi","age":10} db.stu.update({"name":"zhangsan"},{"name":"lisi","age":10}) $set修改器,指定要更新的key,key不存在則創(chuàng)建,存在則更新。 #將name為zhangsan的所有文檔替換為{"name":"lisi","no":'100'} db.stu.update({"name":"zhangsan"},{$set:{"name":"lisi","no":'100'}},{multi:true})
查找數(shù)據(jù)
#查找所有數(shù)據(jù) db.集合名.find() # 查找到所有匹配數(shù)據(jù) db.集合名.find({條件文檔}) # 只返回匹配的第一個(gè)數(shù)據(jù) db.stu.find({age:{$gt:16}}) #查詢年齡大于16的記錄 db.stu.find({$or:[{age:{$gt:18}},{name:"xiaoming"}]) #查詢年齡大于18或者名字是xiaoming的記錄 #使用$where后面寫(xiě)一個(gè)函數(shù),返回滿足條件的數(shù)據(jù) db.stu.find({$where:function(){return this.age>20}}) #用于讀取指定數(shù)量的文檔 db.集合名稱.find().limit(NUMBER) #對(duì)查詢結(jié)果排序(參數(shù)1升序,參數(shù)-1降序) db.集合名稱.find().sort({字段:1,...}) #統(tǒng)計(jì)結(jié)果中的文檔數(shù) db.集合名稱.find({條件}).count()
到此這篇關(guān)于利用Python操作MongoDB數(shù)據(jù)庫(kù)的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Python操作mongodb數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 利用Python操作MongoDB數(shù)據(jù)庫(kù)的詳細(xì)指南
- python?操作?mongodb?數(shù)據(jù)庫(kù)詳情
- MongoDB安裝使用并實(shí)現(xiàn)Python操作數(shù)據(jù)庫(kù)
- Python操作MongoDb數(shù)據(jù)庫(kù)流程詳解
- python連接、操作mongodb數(shù)據(jù)庫(kù)的方法實(shí)例詳解
- Python操作Mongodb數(shù)據(jù)庫(kù)的方法小結(jié)
- 淺析Python與Mongodb數(shù)據(jù)庫(kù)之間的操作方法
- Python使用pymongo庫(kù)操作MongoDB數(shù)據(jù)庫(kù)的方法實(shí)例
相關(guān)文章
python內(nèi)置函數(shù)anext的具體使用
本文主要介紹了python內(nèi)置函數(shù)anext的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01利用python實(shí)現(xiàn)全屏愛(ài)心雨向喜歡的人表白
馬上520了,教大家用Python做一個(gè)下愛(ài)心雨的特效,這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)全屏愛(ài)心雨向喜歡的人表白的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05PyQt5 closeEvent關(guān)閉事件退出提示框原理解析
這篇文章主要介紹了PyQt5 closeEvent關(guān)閉事件退出提示框原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Python用5行代碼寫(xiě)一個(gè)自定義簡(jiǎn)單二維碼
今天小編就為大家分享一篇關(guān)于Python用5行代碼寫(xiě)一個(gè)自定義簡(jiǎn)單二維碼的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10Python中出現(xiàn)"No?module?named?'requests'"
這篇文章主要給大家介紹了關(guān)于Python中出現(xiàn)"No?module?named?'requests'"的解決辦法,"No?module?named?requests"是Python報(bào)錯(cuò)提示,意味著你在使用某個(gè)Python程序或腳本時(shí),沒(méi)有找到名為requests的模塊,需要的朋友可以參考下2023-11-11django 通過(guò)ajax完成郵箱用戶注冊(cè)、激活賬號(hào)的方法
本篇文章主要介紹了django 通過(guò)ajax完成郵箱用戶注冊(cè)、激活賬號(hào)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04