更新Azure CosmosDB分区密钥和分区密钥值



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

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

您可以在批量模式下使用SDK,获取ids的列表并执行并发的DeleteItemAsync操作,因为您知道id,并且您当前的分区密钥是/id,所以您也知道要使用的partition key值。

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);

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

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

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

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

最新更新