我有一个现有的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数据库?
简单答案-否。无法更改现有容器(集合(的分区键属性。此外,不可能更改容器内现有文档的分区键的值。
要更改文档的分区键值,您需要创建具有新分区键值的新文档并删除现有文档。
要更改现有容器的分区键属性,您需要创建一个新容器,并将数据从旧容器迁移到新容器。