快速開始:使用 Azure Cosmos DB for MongoDB 搭配 Python

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,並部署容器化範例應用程式。 應用程式範例使用用戶端程式庫管理、建立、讀取和查詢樣本資料。

  1. 在空的目錄中開啟終端機。

  2. 如果您尚未通過驗證,請使用 azd auth login向 Azure 開發人員 CLI 進行驗證。 依照工具指定的步驟,使用您慣用的 Azure 認證向 CLI 進行驗證。

    azd auth login
    
  3. 使用 azd init 來初始化專案。

    azd init --template cosmos-db-mongodb-python-quickstart
    
  4. 在初始化期間,請設定唯一的環境名稱。

  5. 使用 azd up 部署 Azure Cosmos DB 帳戶。 Bicep 模板同時也部署了一個範例網頁應用程式。

    azd up
    
  6. 在布建程式期間,選取您的訂用帳戶、所需的位置和目標資源群組。 等候佈建程序完成。 該過程可能需要大約五分鐘

  7. 一旦 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.
    
  8. 使用控制台中的網址,通過瀏覽器導航到您的網路應用程式。 觀察執行中應用程式的輸出。

螢幕擷取畫面,其中顯示執行中的 Web 應用程式。

安裝用戶端程式庫

用戶端連結庫可透過 PyPi 作為 pymongo 套件使用。

  1. 開啟終端機,然後導覽至 /src 資料夾。

    cd ./src
    
  2. 如果尚未安裝,則請使用 pymongo 來安裝 pip install 套件。

    pip install pymongo
    
  3. 開啟並檢閱 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