iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
0
Modern Web

三十天全端學習:透過javascript(Onsen UI)、python(tornado)、非關聯式資料庫(mongoDB)完成全端學習,建置web app、mobile app。系列 第 14

三十天全端學習(javascript、python、mongoDB)---第十四天:python驅動mongoDB (II)

第十四天:python驅動mongoDB (II)

今天會說明U(更新),與D(刪除)的指令。


前提概要

day13帶大家操作C(新增)、R(讀取)的指令。


本文概要

操作C、R、U、D中的U跟D指令。
今天的程式碼也會上傳到github中的day14資料夾。


正文開始

1. 更新資料

更新資料有更新一筆與更新多筆的使用方式,更新一筆使用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欄位的值變成4

#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的資料已經被刪除了。

閱讀補充:

W3C---python to mongoDB


小結

基本上python套件pymongo大致介紹到這裡,想要了解更多,可以去套件的官網或是閱讀補充中深入學習。


上一篇
三十天全端學習(javascript、python、mongoDB)---第十三天:python驅動mongoDB I
下一篇
三十天全端學習(javascript、python、mongoDB)---第十五天:python tornado後台架設 (I)
系列文
三十天全端學習:透過javascript(Onsen UI)、python(tornado)、非關聯式資料庫(mongoDB)完成全端學習,建置web app、mobile app。30

尚未有邦友留言

立即登入留言