建立 MongoDB Atlas

首先到 MongoDB Atlas 註冊帳號,然後會讓你填寫使用目的。

接著會看到選擇 cluster 的畫面,選擇免費方案即可。服務商推薦有臺灣節點的 Google Cloud,取個名字就能直接建立了。

select cluster

設定帳號密碼與 IP

進到 quickstart 頁面先建立使用者,用於連接到資料庫,注意密碼只會明文顯示一次,因此要妥善保管,真的忘記了可以編輯再換成新的密碼。

若有其他人或服務要連接到你的資料庫,可以建立額外的使用者便於管理。

create user

接著設定允許連接的 IP 白名單,點擊 Add My Current IP Address 可將這台機器的 IP 加入白名單。若想讓任何 IP 都能連線,可以使用 0.0.0.0/0,但這樣會有較高的安全風險。

add access ip

最後按下 Finish and Close 就完成設定了。

連接到資料庫

在 Database 頁面點擊 Connect 按鈕可以打開連線的面板,下面的兩種連接方式可以搭配使用。

connect to database

connecting panel

使用 MongoDB Compass

點擊 Compass 選項,安裝 MongoDB Compass,然後複製下方的連結。

connect with Compass

若有多個使用者,則連結會是以下格式(後面的隨機 ID 不會跟我一樣),將 username 與 password 依照要連接的使用者修改:

mongodb+srv://<username>:<password>@test.waemok9.mongodb.net/test

接著打開 MongoDB Compass,輸入修改好的連結後點擊 Connect,即可存取資料庫的內容。

Compass panel

使用 PyMongo

點擊 Drivers 選項,複製下方的連結。

connect with drivers

使用 Poetry 或 pip 安裝 pymongo:

poetry add pymongo

可以使下列範例程式來連接及測試:

from datetime import datetime

from pymongo.mongo_client import MongoClient

client = MongoClient("<url>")  # 連接到 MongoClient
db = client["test-database"]  # 存取資料庫
# 或使用 db = client.test_database
collection = db["test-collection"]
# 或使用 collection = db.test_collection
post = {
    "author": "Mike",
    "text": "My first blog post!",
    "tags": ["mongodb", "python", "pymongo"],
    "date": datetime.utcnow(),
}  # 建立一個 document
post_id = collection.insert_one(post).inserted_id  # 插入 document 並獲取產生的 id
repr(post_id)

詳細語法可參考 PyMongo 官方文件。

MongoDB 的資料是使用 JSON 的格式儲存,與 Python 的 dict 類似,而 PyMongo 的插入取讀取資料皆可使用 dict 資料型別完成。

Reference