今天會說明U(更新),與D(刪除)的指令。
day13
帶大家操作C(新增)、R(讀取)的指令。
操作C、R、U、D中的U跟D指令。
今天的程式碼也會上傳到github中的day14
資料夾。
更新資料有更新一筆與更新多筆的使用方式,更新一筆使用update_one()
,更新多筆使用update_many()
的方法。
下圖是day13
中,新增的過的資料。
現在需要先加入一個day14的欄位,值為"good"
#day14 第一小節加入的地方-------
myquery = { "day11": 3 }
newvalues = { "$set": { "day14": "good" } }
mycol.update_one(myquery, newvalues)
#print 所有資料查看更新
for x in mycol.find():
print(x)
透過Robo 3T和我們的python IDLE可以看到資料已經更改了。
#day14 第一小節加入的地方-------
myquery = { "day11": 3 }
newvalues = { "$set": { "day14": 4 } }
mycol.update_one(myquery, newvalues)
#print 所有資料查看更新
for x in mycol.find():
print(x)
最終的結果會如下:
使用update_many()
的方法。
這邊我要將name欄位的值為"黑修斯"改為"hughes",其中我在設定上,使用"$regex": "^黑",意思為搜尋字首有黑的資料。
#day14 第1.1節加入的地方------更新多筆
myquery = { "name": { "$regex": "^黑" } }
newvalues = { "$set": { "name": "hughes" } }
x = mycol.update_many(myquery, newvalues)
print(x.modified_count, "documents updated.")
從下圖可以看到,總共有9筆資料被更動了,程式碼x.modified_count可以計算更動的資料數。
這是從Robo 3T中查詢更改前的資料:
這是更改後的資料:
刪除資料有刪除一筆與刪除多筆的使用方式,刪除一筆使用delete_one()
,刪除多筆使用delete_many()
的方法,其實方法與更新資料大同小異。
下圖是我要刪除的第一筆資料。
#day14 第2節加入的地方------刪除單筆
myquery = { "day14": 4 }
mycol.delete_one(myquery)
程式執行後的結果:
刪除後的結果如下圖:(資料被刪除了)
delete_many()
黑修斯要刪除如下圖中的name欄位中值為hughes的資料。
#day14 第2.1節加入的地方------刪除多筆
myquery = { "name": {"$regex": "^h"} }
x = mycol.delete_many(myquery)
print(x.deleted_count, " documents deleted.")
執行程式碼後,可以看到,有九筆資料被刪除了( 9 documents deleted.)。
再透過Robo 3T查看資料,有關name欄位中值為hughes的資料已經被刪除了。
基本上python套件pymongo大致介紹到這裡,想要了解更多,可以去套件的官網或是閱讀補充中深入學習。
寫得不錯
但這裡是不是出狀況
collection 新增加 column(day11 day14),沒教學到哦