網(wǎng)站首頁 編程語言 正文
python安裝操作mongodb的模塊pymongo
pip install pymongo
python連接mongodb
myclient=pymongo.MongoClient(host='127.0.0.1',port=27017) #指定主機和端口號創(chuàng)建客戶端
查看MongoDB中存在的數(shù)據(jù)庫
dblist=myclient.list_database_names()
print(dblist)
數(shù)據(jù)庫使用:有則直接使用,沒有的話數(shù)據(jù)庫只有在內(nèi)容插入后才會自動創(chuàng)建!
mydb=myclient['dbtest']
print(mydb)
查看當前數(shù)據(jù)庫中的表
collist = mydb. list_collection_names()
print(collist)
使用表(集合)
mycol=mydb['t1']#有則直接使用,沒有的話集合只有在內(nèi)容插入后才會創(chuàng)建!
print(mycol)
MongoDB中數(shù)據(jù)表的操作
1.Python添加MongoDB數(shù)據(jù)
(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數(shù)據(jù)
(1)find()----查詢符合條件的所有數(shù)據(jù)
? ? db.collection.find(查詢條件)
(2)find_one()----查詢符合條件的第一條數(shù)據(jù)
? ? 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數(shù)據(jù)(不存在即創(chuàng)建)
(1)update()---只能修改查詢出的第一條數(shù)據(jù)
? ? db.coolection.update({查詢條件},{$修改器:{修改值}})
? ? 修改器:認定當前修改的類型 $set設(shè)置類型修改器 強制修改某字段的值
(2)3.2之后官方推薦:
? ? update_one()----修改查詢結(jié)果的第一條數(shù)據(jù)
? ? ? ? db.colleciton.update_one({查詢條件},{$修改器:{修改值}})
? ? update_many()----修改查詢結(jié)果所有數(shù)據(jù)
? ? ? ? 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數(shù)據(jù)
(1)remove()----不在推薦使用
? ? db.collection.remove(查詢條件)----刪除符合查詢結(jié)果的所有數(shù)據(jù)
(2)3.2之后官方推薦:
? ? delete_one()----刪除查詢結(jié)果的第一條數(shù)據(jù)
? ? ? ? db.colleciton.delete_one(查詢條件)
? ? delete_many()----刪除查詢結(jié)果的所有數(shù)據(jù)
? ? ? ? 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數(shù)據(jù)排序+跳躍+范圍
對查詢結(jié)果進行排序、跳躍取值、范圍截取
(1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----對查詢結(jié)果升序/降序排序
? ? ? ? db.collection.find({}).sort()
(2)skip(num)----對查詢結(jié)果進行跳躍取值
? ? ? ? db.collection.find({}).skip()
(3)limit(num)----對查詢結(jié)果進行范圍截取
? ? ? ? db.collection.find({}).limit()
(4)優(yōu)先級:sort>skip>limit,與使用時的順序無關(guān)
? ? ? ? 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.查詢關(guān)鍵字
(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.查詢條件操作符(一般用于數(shù)字比較)
(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)針對數(shù)組操作:
? ? ①$push----在Array的最后一個位置中增加一個數(shù)據(jù)
? ? ②$pushAll----在Array的最后一個位置中增加多個數(shù)據(jù)
? ? ③$pull ----刪除Array中的指定單個元素
? ? ④$pullAll ----刪除Array中的指定多個元素
? ? ⑤$pop----刪除Array中的第一個或者最后一個元素 正數(shù)是倒序刪除 負數(shù)是正序刪除
? ? ⑥$----存儲當前(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'}})
原文鏈接:https://www.cnblogs.com/open-yang/p/11205509.html
相關(guān)推薦
- 2022-08-10 C語言折半查找法的超詳細講解_C 語言
- 2022-05-20 ASP.NET?MVC項目部署方式介紹_基礎(chǔ)應(yīng)用
- 2022-08-07 shell進度條追蹤指令執(zhí)行時間的場景分析_linux shell
- 2023-03-03 PostgreSQL時間日期的語法及注意事項_PostgreSQL
- 2022-06-01 Python?調(diào)用?C++?傳遞numpy?數(shù)據(jù)詳情_python
- 2022-05-20 C++實現(xiàn)簡單學生信息管理系統(tǒng)_C 語言
- 2022-02-18 cv2.error: OpenCV(4.5.4-dev) :-1: error: (-5:Bad a
- 2023-10-30 springboot 整合 p6spy 插件打印sql執(zhí)行時間以及真實sql內(nèi)容
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支