在Day 17:建造虛擬通道的關鍵中,莫菲斯提議:用Python和MongoDB來創造一個虛擬通道,讓你們可以從AI大帝的控制中脫離。於是你和莫菲斯進入到一個全白的虛擬空間,在這裡你們可以自由執行程式碼,練習各種技能,還可以提供任何你可能會需要的道具。崔尼蒂會盡量拖延AI大帝攻擊我們的時間,而你要在這個『學習程式』盡快學會怎麼建造虛擬通道,讓大家成功逃出。
莫菲斯在上一集教了你以下步驟:
- 如何從
pymongo
模組導入MongoClient
,就像是得了一把可以打開圖書館門的鑰匙。- 然後,建立一個
MongoClient
物件,並指定資料庫的位置和名稱。這樣就連接到了本地端(localhost)的27017
號埠上了。這就像是用這把鑰匙打開圖書館的門,走進去。- 接著,選擇了一個叫做
escape
的資料庫,並在該資料庫中選擇一個資料集(collection),叫做portal
。這就像是在圖書館中找到了一個特定的書架(資料集),準備上架新書。
「你可以用insert_one指令,新增一個代表『虛擬通道參數』的文件(document)。這就像準備好一本新書,並確定了它的各種資訊(如書名、作者等)。再用insert_one把記錄新增到資料集當中,就像是上架一本新書(艾薇Ivy, 2023)。像這樣……」
col.insert_one({“_id”: 1, “name”: “Zion”, “destination”: “Reality”, “password”: “redpill”, “status”: “open”})
「這樣就建立了一個『可以讓我們回到真實世界的虛擬通道』,叫做Zion
。但是需要輸入正確的密碼redpill
才能打開這個虛擬通道。」
「建立好通道之後,我們可以用find_one
指令來查詢一個文件(document),確認它是不是已經被建立好了。就像是在圖書館裡找一本特定的書一樣,如果找到了符合條件的書,就可以拿起來看(艾薇Ivy, 2023)。像這樣……」
col.find_one({“_id”: 1})
「這樣就可以查到Zion這個虛擬通道的資訊?」
你和莫菲斯在白色的虛擬空間中,練習了一陣子Python和MongoDB的基本操作,你覺得自己已經掌握了一些技巧。但是,你也知道這還不夠,你還需要學會更多的東西,才能建造出一個真正的虛擬通道。
「好了,我們要加快速度了。」莫菲斯說,「再來,我們可以用update_one指令來修改一個文件(document),改變它的屬性。像這樣……」
col.update_one({“_id”: 1}, {“$set”: {“status”: “closed”}})
「哦……我懂了!這就像是圖書館裡的一本書被借走了,我們要把這本書的狀態更新成『已借出』嗎?(艾薇Ivy, 2023)」
「完全正確!在這邊我們可以用來關閉Zion這個虛擬通道,這樣AI大帝就沒辦法追蹤我們了。」
「原來如此,還有這種操作……」
「最後,用delete_one指令來刪除一個文件(document),移除它的紀錄。就像是把圖書館的書下架(艾薇Ivy, 2023)。像這樣……」
col.delete_one({“_id”: 1})
「哦……對耶!這樣就可以徹底刪除Zion這個虛擬通道,這樣AI大帝就沒辦法找到我們了!」
「你學得很快,我猜你應該學會了。」莫菲斯表情有點緊張,「我們該回去趕快把虛擬通道弄出來,希望崔尼蒂有幫我們爭取一些時間。」
聽完莫菲斯的指導,你不敢鬆懈,因為你知道這個計劃執行起來一定沒有想像中的簡單。而且,AI大帝一定不會讓你們輕易逃走。