【问题标题】:Update Azure CosmosDB Partition Key and Partition Key Value更新 Azure CosmosDB 分区键和分区键值
【发布时间】:2022-10-04 22:09:35
【问题描述】:

我有一个使用 /id 作为分区键的现有 Azure Cosmos DB。我们需要进行批量删除,但我们不能这样做,因为所有记录的分区键都不相同。有没有办法更新现有 azure cosmos DB 容器的分区键和分区键值?

【问题讨论】:

    标签: azure azure-cosmosdb


    【解决方案1】:

    要更新文档中的任何属性,您需要id,如果您知道文档的id,那么不妨将其用于批量删除。

    您可以使用Bulk Mode 中的SDK,获取ids 的列表并执行并发DeleteItemAsync 操作,因为您知道id 并且您当前的分区键是/id,那么您就知道要使用的分区键值也。

    Container container = database.GetContainer(ContainerName);
    List<Task> tasks = new List<Task>();
    foreach (string id in itemsToDelete)
    {
        tasks.Add(container.DeleteItemAsync(id, new PartitionKey(id)));
    }
    
    // Wait until all are done
    await Task.WhenAll(tasks);
    

    【讨论】:

      【解决方案2】:

      有没有办法更新分区键和分区键值 现有的 azure cosmos DB?

      简单的答案 - 不。不可能更改现有容器(集合)的分区键属性。此外,无法更改容器内现有文档的分区键值。

      要更改文档的分区键值,您需要使用新的分区键值创建新文档并删除现有文档。

      要更改现有容器的分区键属性,您需要创建一个新容器并将数据从旧容器迁移到新容器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        相关资源
        最近更新 更多