Python操作MongoDB增刪改查代碼示例
python安裝操作mongodb的模塊pymongo
pip install pymongo
python連接mongodb
myclient=pymongo.MongoClient(host='127.0.0.1',port=27017) #指定主機和端口號創(chuàng)建客戶端
查看MongoDB中存在的數據庫
dblist=myclient.list_database_names() print(dblist)
數據庫使用:有則直接使用,沒有的話數據庫只有在內容插入后才會自動創(chuàng)建!
mydb=myclient['dbtest'] print(mydb)
查看當前數據庫中的表
collist = mydb. list_collection_names() print(collist)
使用表(集合)
mycol=mydb['t1']#有則直接使用,沒有的話集合只有在內容插入后才會創(chuàng)建! print(mycol)
MongoDB中數據表的操作
1.Python添加MongoDB數據
(1)insert()----單條和多條插入:MongoDB3.2版本自之前
db.collection.insert({})
db.collection.insert([{},{}...])
(2)3.2之后官方推薦:
insert_one()----單條插入
db.collection.insert_one({})
insert_many()----多條插入
db.collection.insert_many([{},{}...])
res1=mycol.insert([{'name':'a','age':20,'gender':1}]) print(res1) res2=mycol.insert([{'name':'b','age':21,'gender':0},{'name':'c'}]) print(res2) ???????mydict = { "name": "Google", "alexa": "1", "url": "https://www.google.com" } mylist = [ { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" }, { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" }, { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" }, { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" }, { "name": "Github", "alexa": "109", "url": "https://www.github.com" } ] res3=mycol.insert_one(mydict) print(res3) res4=mycol.insert_many(mylist) print(res4)
2.Python查詢MongoDB數據
(1)find()----查詢符合條件的所有數據
db.collection.find(查詢條件)
(2)find_one()----查詢符合條件的第一條數據
db.collection.find_one(查詢條件)
all=mycol.find() # all=mycol.find({'age':21}) print(all) for doc in all: print(doc) # one=mycol.find_one() one=mycol.find_one({'age':21}) print(one)
3.Python修改MongoDB數據(不存在即創(chuàng)建)
(1)update()---只能修改查詢出的第一條數據
db.coolection.update({查詢條件},{$修改器:{修改值}})
修改器:認定當前修改的類型 $set設置類型修改器 強制修改某字段的值
(2)3.2之后官方推薦:
update_one()----修改查詢結果的第一條數據
db.colleciton.update_one({查詢條件},{$修改器:{修改值}})
update_many()----修改查詢結果所有數據
db.colleciton.update_many({查詢條件},{$修改器:{修改值}})
res5=mycol.update({'name':'c'},{'$set':{'age':23}}) print(res5) res6=mycol.update_one({'name':'d'},{'$set':{'age':30,'gender':1}}) print(res6) res7=mycol.update_many({'name':'d'},{'$set':{'age':22}}) print(res7)
4.Python刪除MongoDB數據
(1)remove()----不在推薦使用
db.collection.remove(查詢條件)----刪除符合查詢結果的所有數據
(2)3.2之后官方推薦:
delete_one()----刪除查詢結果的第一條數據
db.colleciton.delete_one(查詢條件)
delete_many()----刪除查詢結果的所有數據
db.colleciton.delete_many(查詢條件)
res8=mycol.remove({'age':22}) print(res8) res9=mycol.delete_one({'name':'c'}) print(res9) res10=mycol.delete_many({'name':'a'}) print(res10)
5.Python操作MongoDB數據排序+跳躍+范圍
對查詢結果進行排序、跳躍取值、范圍截取
(1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----對查詢結果升序/降序排序
db.collection.find({}).sort()
(2)skip(num)----對查詢結果進行跳躍取值
db.collection.find({}).skip()
(3)limit(num)----對查詢結果進行范圍截取
db.collection.find({}).limit()
(4)優(yōu)先級:sort>skip>limit,與使用時的順序無關
db.collection.find({}).sort().skip().limit()
db.collection.find({}).limit().sort().skip()
db.collection.find({}).skip().sort().limit()
print('----------------------------') alldata1=mycol.find({}).sort('age',pymongo.ASCENDING)#升序 for i in alldata1: print(i) print('----------------------------') alldata2=mycol.find({}).skip(8) for i in alldata2: print(i) print('----------------------------') alldata3=mycol.find({}).limit(2) for i in alldata3: print(i)
6.查詢關鍵字
(1)$and----并列查詢
db.collection.find({'$and':[{},{}...]})
(2)$or----或條件查詢
db.collection.find({'$or':[{},{}...]})
(3)$in----范圍查詢
db.collection.find({field:{'$in':['',''...]}})
(4)$all----子集查詢
db.collection.find({field:{'$all':['',''...]}})
print('+++++++++++++++++++++++++++++++') res11=mycol.find({"name":'c'}) for i in res11: print(i) print('+++++++++++++++++++++++++++++++') res12=mycol.find({'$and':[{'name':'c'},{'age':20}]}) for i in res12: print(i) print('+++++++++++++++++++++++++++++++') res13=mycol.find({'$or':[{'name':'c'},{'name':'b'}]}) for i in res13: print(i) print('+++++++++++++++++++++++++++++++') res14=mycol.find({'name':{'$in':['c','b']}}) for i in res14: print(i) print('+++++++++++++++++++++++++++++++') res15=mycol.find({'hobby':{'$all':['run','eat','swim']}}) res15=mycol.find({'hobby':{'$all':['run','eat']}}) for i in res15: print(i)
7.查詢條件操作符(一般用于數字比較)
(1)$lt----小于
db.collection.find({field:{'$lt':value}})
(2)$gt----大于
db.collection.find({field:{'$gt':value}})
(3)$eq----等于
db.collection.find({field:{'$eq':value}})
(4)$lte----小于等于
db.collection.find({field:{'$lte':value}})
(5)$gte----大于等于
db.collection.find({field:{'$gte':value}})
(6)$ne----不等于
db.collection.find({field:{'$ne':value}})
# mycol.insert_many([{'name':'d','age':18},{'name':'e','age':22},{'name':'f','age':32},]) print("**************************************") res16=mycol.find({'age':{'$lt':21}}) for i in res16: print(i) print("**************************************") res17=mycol.find({'age':{'$gt':21}}) for i in res17: print(i) print("**************************************") res18=mycol.find({'age':{'$eq':21}}) for i in res18: print(i) print("**************************************") res19=mycol.find({'age':{'$lte':21}}) for i in res19: print(i) print("**************************************") res20=mycol.find({'age':{'$gte':21}}) for i in res20: print(i) print("**************************************") res21=mycol.find({'age':{'$ne':21}}) for i in res21: print(i)
8.$修改器 + $ 字符特殊用法
(1)$set----修改某個字段的值
(2)$unset---刪除字段
(3)$inc----引用增加(先引用 后增加)
(4)針對數組操作:
①$push----在Array的最后一個位置中增加一個數據
②$pushAll----在Array的最后一個位置中增加多個數據
③$pull ----刪除Array中的指定單個元素
④$pullAll ----刪除Array中的指定多個元素
⑤$pop----刪除Array中的第一個或者最后一個元素 正數是倒序刪除 負數是正序刪除
⑥$----存儲當前(Array)符合條件的元素下標索引 ,只能存儲最外層的 索引位置
# mycol.update_one({'name':'c','age':20},{'$set':{'hobby':['swim,dump','sing']}}) # mycol.update_one({'$and':[{'name':'c'},{'age':20}]},{"$unset":{'hobby':[1,2]}}) # mycol.update_many({'name':{'$in':['d','e','f']}},{'$inc':{'age':2}}) # mycol.update_one({'name':'b'},{'$push':{'hobby':['swim','sing']}}) # mycol.update({'name':'c'},{'$pushAll':{'hobby':['sing','scrapy']}})#實際測試無法使用,報錯:Unknown modifier: $pushAll # mycol.update_many({'name':'b'},{'$pullAll':{'hobby':['swim','play']}})#實際測試每次只刪除一個元素 # mycol.update_one({'hobby':'run'},{'$pull':{'hobby':'eat'}}) # mycol.update_many({'hobby':'run'},{'$pop':{'hobby':1}}) # mycol.update_many({'hobby':'run'},{'$pop':{'hobby':-1}}) # mycol.update_many({'name':'c','age':{'$ne':20}},{'$set':{'hobby':['swim','sing']}}) # mycol.update_many({'hobby':'run'},{'$push':{'hobby':'swim'}})
本文主要講解了Python操作MongoDB增刪改查代碼實例,更多關于Python操作MongoDB的知識請查看下面的相關鏈接
相關文章
如何基于Python代碼實現(xiàn)高精度免費OCR工具
這篇文章主要介紹了如何基于Python代碼實現(xiàn)高精度免費OCR工具,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06Python 數據分析之Beautiful Soup 提取頁面信息
Beautiful Soup 提供一些簡單的、python 式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序2021-10-10Python Flask框架開發(fā)之運用SocketIO實現(xiàn)WebSSH方法詳解
Socket.IO本是一個面向實時web應用的JavaScript庫,現(xiàn)在已成為擁有眾多語言支持的Web即時通訊應用的框架。這篇文章主要介紹了Python 運用SocketIO實現(xiàn)WebSSH方法2022-10-10