当前位置: 首页 > 知识库问答 >
问题:

删除CosmosDB容器项

左丘季
2023-03-14

我正在尝试创建一个 Azure 函数(在 Python 中实现)以删除 CosmosDB 容器中的项。使用 Azure Cosmos DB Input

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

_init_. 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 配置属性来指定 delete 语句(甚至不太确定这是否是一种好的做法..),但只是想知道是否有其他删除方法可用。

共有1个答案

程博学
2023-03-14

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

没有可以传递的配置会使绑定执行Delete,只是代码中没有: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

 类似资料:
  • 我一直在寻找一种技术,使用浏览器中的代码编辑器,使用Azure函数删除Cosmos数据库中的项目。我不想在VS上使用本地开发的代码,原因有很多。 这里提供了我使用的代码,我使用的是带有CosmosDB输入和输出绑定的HttpTrigger。它们的名称非常明显(inputDocument,outputDocument)。 这段代码在从db读取项目和编写新文档方面工作得非常好,但是我希望能够删除单个项

  • 我正在使用 VSTS 利用新的静态网站功能将角度应用部署到 Blob 存储。为此,我使用 任务。由于Angular将在每次构建时为不同的捆绑包创建新文件名,因此我不能只是覆盖旧文件,因此最终会有很多旧文件 不幸的是,我还没有找到合适的任务来做这件事。 如何在重新部署之前使用发布管道删除或清除VSTS中的此容器?

  • 问题内容: 此问题与我是否应该担心多余的,未运行的Docker容器有关?。 我想知道如何删除旧容器。将让你删除一个,但我有很多了。没有提供选择选项(如全部,或按图像名称)。 也许有一个存储这些容器的目录,可以方便地手动删除它们? 问题答案: 从Docker 1.13.x开始, 您可以使用Docker容器prune: 这将删除所有停止的容器,并且应在所有平台上以相同的方式工作。 还有一个Docker

  • 我在Azure cosmosDB中有一个集合,我在其中启用了无默认值的生存时间(TTL)功能。 根据我将在此问题中提到的文档,一切似乎都非常清楚,但仍然缺少一些东西,因为5天后我仍然可以看到TTL为300秒的文档。 符合文件要求: Azure Cosmos DB将在这段时间后自动删除这些项目,因为它们是最后一次修改的。生存时间值以秒为单位进行配置。当您配置TTL时,系统将根据TTL值自动删除过期的

  • 我在官方docker网站上遵循了“开始”教程,一切都很顺利,直到我尝试删除容器。每次当我运行时 或 具有该 ID 的初始容器将停止或删除,但新容器出现并运行。我试图使用以下命令更新容器: 然而,这没有帮助。 这里是'docker info'命令结果: 和“docker inspect[container_id]”

  • 我有很多运行docker容器的测试。每个都有一个卷。 如何知道需要删除的卷名? 例如: 手动停止并删除容器后,卷仍然存在。 我不想删除所有卷,因为其中一些卷仍在使用中。