建立 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 不會跟我一樣),將 usernamepassword 依照要連接的使用者修改:

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