Important
您是否想要遷移現有的 MongoDB 應用程式或使用 MongoDB 查詢語言 (MQL) 功能? 可以考慮 Azure DocumentDB。
您是否正在尋找一種適用於高擴展性場景的資料庫解決方案,且具有 99.999% 可用性的服務等級協定(SLA)、即時自動擴展,以及跨多個區域的自動容錯切換? 考慮使用Azure Cosmos DB作為NoSQL的選擇。
在本快速入門中,您會使用 Python 部署適用於 MongoDB 的基本 Azure Cosmos DB 應用程式。 適用於 MongoDB 的 Azure Cosmos DB 是無架構資料存放區,可讓應用程式使用 MongoDB 連結庫將非結構化檔案儲存在雲端中。 您將瞭解如何使用 Python 在 Azure Cosmos DB 資源內建立文件並執行基本工作。
程式庫原始碼 | 套件(PyPI) | Azure 開發人員 CLI
Prerequisites
- Azure Developer CLI
- Docker 桌面
- Python 3.12
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
初始化專案
使用 Azure 開發人員 CLI (azd) 建立適用於資料表帳戶的 Azure Cosmos DB,並部署容器化範例應用程式。 應用程式範例使用用戶端程式庫管理、建立、讀取和查詢樣本資料。
在空的目錄中開啟終端機。
如果您尚未通過驗證,請使用
azd auth login向 Azure 開發人員 CLI 進行驗證。 依照工具指定的步驟,使用您慣用的 Azure 認證向 CLI 進行驗證。azd auth login使用
azd init來初始化專案。azd init --template cosmos-db-mongodb-python-quickstart在初始化期間,請設定唯一的環境名稱。
使用
azd up部署 Azure Cosmos DB 帳戶。 Bicep 模板同時也部署了一個範例網頁應用程式。azd up在布建程式期間,選取您的訂用帳戶、所需的位置和目標資源群組。 等候佈建程序完成。 該過程可能需要大約五分鐘。
一旦 Azure 資源的配置完成,輸出中會包含執行網頁應用程式的 URL。
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.使用控制台中的網址,通過瀏覽器導航到您的網路應用程式。 觀察執行中應用程式的輸出。
安裝用戶端程式庫
用戶端連結庫可透過 PyPi 作為 pymongo 套件使用。
開啟終端機,然後導覽至
/src資料夾。cd ./src如果尚未安裝,則請使用
pymongo來安裝pip install套件。pip install pymongo開啟並檢閱 src/requirements.txt 檔案,以驗證
pymongo專案是否存在。
匯入程式庫
將 MongoClient 類型匯入您的應用程式程式碼。
from pymongo import MongoClient
物件模型
| Name | Description |
|---|---|
MongoClient |
用來連線到 MongoDB 的類型。 |
Database |
表示帳戶中的資料庫。 |
Collection |
表示帳戶中資料庫的一個資料集合。 |
程式碼範例
範本中的範例程式代碼會使用名為 cosmicworks 的資料庫和名為 products的集合。 集合 products 包含每個產品的名稱、類別、數量和唯一標識碼等詳細數據。 集合使用 /category 屬性作為分片鍵。
驗證用戶端
此範例會建立 型別 MongoClient 的新實例。
connection_string = "<azure-cosmos-db-for-mongodb-connection-string>"
client = MongoClient(connection_string)
取得資料庫
此範例會使用 Database 型別中的 get_database 函式來建立 MongoClient 型別的實例。
database = client.get_database("<database-name>")
取得集合
此範例會使用 Collection 型別中的 get_collection 函式來建立 Database 型別的實例。
collection = database.get_collection("<collection-name>")
建立文件
使用 collection.update_one在集合中建立檔。 此方法會有效地「更新插入」資料,如果該資料已存在,則會取代原資料。
new_document = {
"_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"category": "gear-surf-surfboards",
"name": "Yamba Surfboard",
"quantity": 12,
"sale": False,
}
filter = {
"_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"category": "gear-surf-surfboards"
}
payload = {
"$set": new_document
}
result = collection.update_one(filter, payload, upsert=True);
讀取文件
使用唯一識別碼(id)和分片鍵欄位來執行點讀取操作。 使用 collection.find_one 有效率地擷取特定項目。
filter = {
"_id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"category": "gear-surf-surfboards"
}
existing_document = collection.find_one(filter)
查詢文件
使用 collection.find,以對容器中的多個項目執行查詢。 此查詢會尋找指定類別內的所有項目(Shard Key)。
filter = {
"category": "gear-surf-surfboards"
}
matched_documents = collection.find(filter)
for document in matched_documents:
# Do something with each item
探索您的資料
使用適用於 Azure Cosmos DB 的 Visual Studio Code 擴充功能來探索 MongoDB 數據。 您可以執行核心資料庫作業,包括但不限於:
- 使用剪貼簿或查詢編輯器執行查詢
- 修改、更新、建立和刪除文件
- 從其他來源匯入大量數據
- 管理資料庫和集合
如需詳細資訊,請參閱 如何使用Visual Studio Code擴充功能來探索適用於 MongoDB 的 Azure Cosmos DB 數據。
清理資源
當您不再需要範例應用程式或資源時,請移除對應的部署和所有資源。
azd down --force --purge