iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
AI & Data

AIoT的藍藥丸與紅藥丸,你選哪個?系列 第 31

Day 18:MongoDB神秘圖書館的鑰匙 (1) #insert_one #find_one

  • 分享至 

  • xImage
  •  

MongoDB神秘圖書館的鑰匙

上一篇用MongoClient電話亭,前往MongoDB資料集的產地提到了:
MongoClient是PyMongo套件中用來連接MongoDB資料庫的類別,像是一個用Python語言和MongoDB資料庫溝通的電話

  這次用圖書館來重新比喻整個過程,再連接到接下來的insert_one指令和find_one指令,會比較好理解。

  從pymongo模組導入MongoClient,就像是你得了一把可以打開圖書館門的鑰匙。接著,建立一個MongoClient物件,並指定資料庫的位置和名稱。這樣就連接到了本地端(localhost)的27017號埠上了。這就像是你用這把鑰匙打開圖書館的門,走了進去。
  接著,你選擇了一個叫做escape的資料庫,並在該資料庫中選擇一個資料集(collection),叫做portal。這就像是你在圖書館中找到了一個特定的書架(資料集),並準備上架新書。

上架新書:insert_one指令

就像是在圖書館中增加一本新書。

  • 簡單說明:你可以把insert_one指令想像成在圖書館中增加一本新書。這個指令就像是一個表格,你要填寫書的所有相關資訊,像是:書名、作者、出版日期等(這裡的欄位名稱和對應的值)。這就像是在一本書中新增一個新的章節,你需要提供章節的標題(欄位名稱)和內容(值)。如果你沒有提供書的編號("id"欄位),圖書館會自動為你的書分配一個唯一的編號。
  • 相關話題
    • MongoDBinsert_one是MongoDB中的一個指令,圖書館員工作內容包含了『幫新書上架』。
    • 文件(Document)insert_one指令是用來插入文件到MongoDB集合中的,就像圖書館上架新書一樣。
    • PyMongo:我們通常會使用像PyMongo這樣的工具來執行insert_one指令,就像我們在圖書館如果找不到書的時候,會去問圖書館員,或是用查詢書本位置的機台,來讓我們可以順利在圖書館找到我們需要的書。
    • 使用範例:「可以用insert_one指令來新增一個文件(document),代表一個虛擬通道的參數。(艾薇Ivy, 2023)」

實作:insert_one指令

  • Python MongoDB – insert_one Query這篇文章有提到如何使用insert_one指令,新增一筆包含參數的文件。
  • 這篇文章新增了一個字典Dictionary來表示要插入的記錄record。這就像準備好一本新書,並確定了它的各種資訊(如書名、作者等)。再用insert_one把記錄新增到資料集當中,就像是上架一本新書。
# Creating Dictionary of records to be
# inserted
record = { "_id": 5,
          "name": "Raju",
          "Roll No": "1005",
          "Branch": "CSE"}

# Inserting the record1 in the collection
# by using collection.insert_one()
rec_id1 = collection.insert_one(record)

我要找書:find_one指令

find_one指令就像是在圖書館裡找一本特定的書。

  • 簡單說明:你可以把find_one指令想像成在圖書館裡找一本特定的書。MongoDB就像是一個大型的圖書館,而文件(document)就像是圖書館裡的書。當你想找一本特定的書時,你會根據某些條件(例如書名或作者)來查找。這就像使用find_one指令在MongoDB中查找符合特定條件的文件一樣。如果找到了符合條件的書,你就可以拿起來看;如果沒有找到,代表可能沒有這本書,你該去找其他書了。
  • 相關話題
    • MongoDB:這就像是一個大型的圖書館,裡面存放著各種不同的書(文件, document)。
    • 文件(Document):這就像是圖書館裡的書,每一本都有專屬自己的獨特內容和特性。
    • 過濾器(Filter):這就像是在找書的時候,我們需要用一些條件(可能是:書名、作者或主題等)去篩選。
  • 使用範例:「建立好通道之後,我們可以用find_one指令,就可以查詢到『虛擬通道』的資訊,確認它是不是已經被建立好了。(艾薇Ivy, 2023)」

實作:find_one指令

如果想在MongoDB中查詢_id為1的文件,你可以使用以下指令:

col.find_one({“_id”: 1})

這就像是在圖書館裡找一本編號為1的書一樣。如果找到了,你就可以拿起來看;如果沒有找到,代表可能沒有這本『編號為1的書』,你該去找其他書了。

MongoDB 的 CRUD(3) - Find & Update(Andylinee, 2020)這篇文章有提到如何使用findOne()指令,可以透過對指定的 field 的 value 進行過濾。
使用findOne()來查詢,只會回傳「第一個」符合過濾條件的文件(Document)。
如果想要回傳「所有符合條件的」 文件(Document),就要用作者Andylinee(2020)在文章介紹的find()。


上一篇
Day 18:用資料庫打敗資料庫(Code Escape: Break Free)
下一篇
Day 18:MongoDB神秘圖書館的鑰匙 (2) #update_one #delete_one
系列文
AIoT的藍藥丸與紅藥丸,你選哪個?62
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言