【问题标题】:PYTHON - Delete items from a collection in Azure Cosmos DBPYTHON - 从 Azure Cosmos DB 的集合中删除项目
【发布时间】:2019-09-03 15:21:27
【问题描述】:

我是使用 Azure 进行开发的新手。我希望你能帮助这个代码。我的目标是从 Azure Cosmos DB 的集合中删除项目。但我得到 http 错误:如果我使用这个值 'partionKey' = '/Structures' 则为 400,如果值为 '' 则为 404。错误消息 = "x-ms-partitionkey 标头中提供的分区键的组件少于集合中定义的组件"

client = cosmos_client.CosmosClient("https://....documents.azure.com:443/", {'masterKey': '...'})

options = {}

options['enableCrossPartitionQuery'] = True
options['maxItemCount'] = 5
options['partitionKey'] = '/Structures'

client.DeleteItem("dbs/.../colls/.../docs/.../", options)

【问题讨论】:

    标签: python-2.7 azure-cosmosdb


    【解决方案1】:

    错误是由这一行引起的:

    options['partitionKey'] = '/Structures'
    

    这里需要指定partition key的具体值,而不是列名。比如我的partition key是'/name',而这个文档中的具体值是'A'。

    然后你的代码看起来像:

    from azure.cosmos import cosmos_client
    
    client = cosmos_client.CosmosClient("https://***.documents.azure.com:443/", {'masterKey': '***'})
    
    options = {}
    
    options['enableCrossPartitionQuery'] = True
    options['maxItemCount'] = 5
    options['partitionKey'] = 'A'
    
    client.DeleteItem("dbs/db/colls/coll/docs/2", options)
    

    【讨论】:

    • 我们可以为不止一件商品提供相似的价值吗?
    • @Aminenima 不明白你的意思,你的意思是多个项目有一个相同的分区键?
    • id 在分区内必须是唯一的。您可以拥有具有相同id 的项目,但它们必须位于不同的分区中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多