删除 CosmosDB 容器项

Delete CosmosDB Container Items

我正在尝试创建一个 Azure 函数(在 Python 中实现)来删除 CosmosDB 容器中的项目。使用 Azure Cosmos DB 输入和输出绑定,我能够添加、查询和更新项目,但我找不到可以删除项目的方法。是否可以使用绑定方法删除项目?

以下代码是我目前用来进行简单更新的代码。

_初始化_.py文件

import logging
import azure.functions as func

def main(req: func.HttpRequest, doc: func.Out[func.Document]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    departure_time = ""
    arrival_time = ""

    try:
        req_body = req.get_json()
    except ValueError:
        pass
    else:
        bc_id_no = req_body.get('bc_id_no')
        trip_id = req_body.get('trip_id')
        departure_time = req_body.get('departure_time')
        arrival_time = req_body.get('arrival_time')

    if bc_id_no and trip_id:
        newdocs = func.DocumentList() 

        input_dict = {
            "bc_id_no": bc_id_no,
            "id": trip_id,
            "departure_time": departure_time,
            "arrival_time": arrival_time
        }

        newdocs.append(func.Document.from_dict(input_dict))
        doc.set(newdocs)
        
        return func.HttpResponse(f"This HTTP triggered function executed successfully.")
    else:
        return func.HttpResponse(
             "bc_id_no or trip_id not available",
             status_code=200
        )

function.json

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ],
      "route": "update_rec"
    },
    {
      "type": "cosmosDB",
      "direction": "out",
      "name": "doc",
      "databaseName": "mockDB",
      "collectionName": "mockCollection",
      "connectionStringSetting": "AzureCosmosDBConnectionString"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
}

了解可以使用输入绑定的 sqlQuery 配置属性来指定删除语句(甚至不太确定这是否是一个好习惯..)但只是想知道是否有其他删除方法可用.

绑定只支持查询、读取(输入绑定)或添加(输出绑定),不支持删除。

没有您可以传递的配置会使绑定执行删除,它只是不在代码中:https://github.com/Azure/azure-webjobs-sdk-extensions/tree/cosmos/v3.x/src/WebJobs.Extensions.CosmosDB

我能想到的唯一替代方法是,如果您直接在函数内使用 Python SDK 来执行删除:https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-python

只需确保在执行范围之外创建和维护实例:https://docs.microsoft.com/azure/azure-functions/manage-connections#static-clients