利用Python操作MongoDB數(shù)據(jù)庫的詳細指南
數(shù)據(jù)庫的分類
數(shù)據(jù)庫可以簡單的分為 MySQL 和 NOSQL 兩類。這里的 NOSQL 不是 NO SQL 的意思,他的意思是 Not Only MySQL
MySQL與NoSQL之間的區(qū)別:
1、MySQL是一個基于表格設(shè)計的關(guān)系數(shù)據(jù)庫,而NoSQL本質(zhì)上是非關(guān)系型的基于文檔的設(shè)計。
2、MySQL數(shù)據(jù)庫,覆蓋了巨大的IT市場;具有固定市場的MySQL數(shù)據(jù)庫包含一個龐大的社區(qū)。而NoSQL數(shù)據(jù)庫是最新的到來,與MySQL相比,社區(qū)正在慢慢發(fā)展。
3、MySQL的嚴格模式限制并不容易擴展,而NoSQL可以通過動態(tài)模式特性輕松擴展。
4、MySQL中創(chuàng)建數(shù)據(jù)庫之前需要詳細的數(shù)據(jù)庫模型,而在NoSQL數(shù)據(jù)庫類型的情況下不需要詳細的建模。
5、MySQL提供了大量的報告工具,可以幫助應(yīng)用程序有效,而NoSQL數(shù)據(jù)庫缺少用于分析和性能測試的報告工具。
6、MySQL是一個關(guān)系數(shù)據(jù)庫,其設(shè)計約束靈活性較低;而NoSQL本質(zhì)上是非關(guān)系型的,與MySQL相比,它提供了更靈活的設(shè)計。
7、MySQL中使用的標準語言是SQL;而NoSQL中缺乏標準的查詢語言。
mongodb是什么
mongodb是一種數(shù)據(jù)庫,它可以儲存鍵值對類型的數(shù)據(jù)(json,字典)。目前流行的數(shù)據(jù)庫是 MySQL ,但它并不利于初學(xué)者入門。我之前發(fā)過 Tinydb,Sqlite3 等數(shù)據(jù)庫的講解,都比較簡單,那我這次來發(fā)一下mongodb數(shù)據(jù)庫。
mongodb 的數(shù)據(jù)庫、集合
一個數(shù)據(jù)庫下可以有多個集合,集合里存儲數(shù)據(jù)。集合可以理解為 SQL 數(shù)據(jù)庫中的表。
使用Python操作mongodb
安裝 mongodb
終端運行
pip install pymongo
連接數(shù)據(jù)庫
client = pymongo.MongoClient(host, port)
host是地址,port 是端口。
切換數(shù)據(jù)庫 第一種方法
db_name = client['db_name']
其中 db_name 是你的數(shù)據(jù)庫名。
第二種方法
db_name = client.get_database('db_name')其中 db_name 是你的數(shù)據(jù)庫名。
第三種方法
db_name = client.db_name
切換集合
db_name.test
其中 test 是集合名,沒有這個集合會自動創(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ù),它的類型是鍵值對,即 Python 中的字典。這是一條合法的 data
{"name":"XiaoMing","password":123456}
特殊的,如果要插入在指定 id ,可以這樣寫
result = db_name.test.insert_one({_id:1,"xxx":"xxx",...})
也可以插入多個,只需要把 data 變成
[{"name":"XiaoMing","password":123456},{"name":"XiaoHong","password":123456}]
刪除數(shù)據(jù)
db.test.remove(查詢表達式, isJustOne)
查詢表達式有這些
| 語法 | 操作 | 格式 |
|---|---|---|
| $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(查詢表達式,新值,選項) 選項: {upsert : true/false, multi : ture/false}
- upsert:默認為 false , 作用:無相應(yīng)記錄是否insert,與mysql中的replace同
- multi:默認為 false , 作用:是否作用于多條
#替換文檔,將name為zhangsan的第一個文檔替換為{"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({條件文檔})
# 只返回匹配的第一個數(shù)據(jù)
db.stu.find({age:{$gt:16}}) #查詢年齡大于16的記錄
db.stu.find({$or:[{age:{$gt:18}},{name:"xiaoming"}]) #查詢年齡大于18或者名字是xiaoming的記錄
#使用$where后面寫一個函數(shù),返回滿足條件的數(shù)據(jù)
db.stu.find({$where:function(){return this.age>20}})
#用于讀取指定數(shù)量的文檔
db.集合名稱.find().limit(NUMBER)
#對查詢結(jié)果排序(參數(shù)1升序,參數(shù)-1降序)
db.集合名稱.find().sort({字段:1,...})
#統(tǒng)計結(jié)果中的文檔數(shù)
db.集合名稱.find({條件}).count()
到此這篇關(guān)于利用Python操作MongoDB數(shù)據(jù)庫的詳細指南的文章就介紹到這了,更多相關(guān)Python操作mongodb數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
opencv+python實現(xiàn)鼠標點擊圖像,輸出該點的RGB和HSV值
這篇文章主要介紹了opencv+python實現(xiàn)鼠標點擊圖像,輸出該點的RGB和HSV值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python中使用input()函數(shù)獲取用戶輸入值方式
這篇文章主要介紹了python中使用input()函數(shù)獲取用戶輸入值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python實現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼
VOC 的標注是xml格式的,而YOLO是.txt格式,所以要實現(xiàn)VOC數(shù)據(jù)集轉(zhuǎn)YOLO數(shù)據(jù)集,只能利用代碼實現(xiàn)。所以本文為大家介紹了Python中xml轉(zhuǎn)txt的示例代碼,需要的可以參考一下2022-03-03
基于Matplotlib?調(diào)用?pyplot?模塊中?figure()?函數(shù)處理?figure圖形對象
這篇文章主要介紹了基于Matplotlib?調(diào)用?pyplot?模塊中?figure()?函數(shù)處理?figure圖形對象,matplotlib.pyplot模塊能夠快速地生成圖像,但如果使用面向?qū)ο蟮木幊趟枷?,我們就可以更好地控制和自定義圖像,下面就來詳細介紹其內(nèi)容,需要的朋友可以參考下2022-02-02
Win10下python 2.7與python 3.7雙環(huán)境安裝教程圖解
這篇文章主要介紹了Win10下python 2.7與python 3.7雙環(huán)境安裝教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10

