azure-cosmosdb - 在 Cosmos 中批量删除
问题描述
我正在使用新的 SDK 进行“批量”删除。
new CosmosClientOptions() { AllowBulkExecution = true }
我想删除文档中特定日期超过 3 年的任何内容;IE,
Select c.id,
c.nameofPartitionKeyField
from c
where c.InvoiceDate < 3 years ago --???
我不能在这里使用 Time To Live,因为所有文档都是在一年前加载的,过去三年。但是现在,一年后,我们要删除四年前的项目。
我首先查询以获取所需的id
和分区键:
tasks.Add(container.DeleteItemStreamAsync(item.id.ToString(), new PartitionKey(item.pk.ToString()))
接着
await Task.WhenAll(tasks);
但无论我做什么,如果我选择超过 20 或 30 条记录,我会收到 429 个太多的请求。如果我一次只能做 20 条记录,这看起来不像是“BulK”。但我一定做错了什么。我正在关注我见过的所有示例,但没有人提供删除示例,只有插入。无论如何,它不应该有太大的不同。
我确实有一个存储过程,可以继续使用,并且会继续删除项目,但它似乎很慢。我需要删除大约 600 万份文档。这似乎没有做到或很快做到。
解决方案
推荐阅读
- swift - 如何使用 urlsession 在手表操作系统上执行 http 请求
- python - Groupby 连续值和聚合
- arrays - 如何使用Ruby中的数组方法将字符串数组转换为带有牛津逗号的列表
- php - 如何从方形目录 API 返回对象中提取特定字段?
- javascript - 如何根据可变左百分比对齐文本
- swift - 我怎么知道我的“forKey”用户默认键名是什么
- python - 我需要为此获得连续输入,但是当我使用 while 循环时,它会中断
- c++ - 限制数组类型的大小,虽然还没有实例
- bash - 我怎样才能得到 whoami 因为它会存在 *before* sudo 到变量中?
- datastage - 修剪前导和尾随空格而不使用数据阶段中的转换阶段