node.js,在Azure Cosmos DB中批量删除数据
1.删除数据操作:
对于数据,不做逻辑删除,仅作标记删除,即将数据的isDelete属性置为true,因此删除数据实际上是修改数据。
某个item如图
const item = await container.item(id, partitionKey).read() // 根据id和partitionKey读取数据
let Item = item.resource //获取数据所有属性
Item.isDelete = "true" // 将isDelete字段设置为true,标记删除
const { resource: replacedItem } = await container.item(id).replace(Item) //更新原数据
2.批量操作
- V3版本及更新的SDK:
使用Container.items.bulk()方法进行批量操作
const { resources: items } = await container.items.query(querySpec).fetchAll(); // 根据条件查询所有符合的数据
const operations = items.map(item => {
return {
operationType: 'Replace',
partitionKey: item.partitionKey,
resourceBody: {
id: item.id,
...item, // 保持原有属性不变或添加或修改你想要的属性
isDelete: "true" //标记删除
}
};
});
// 执行批量操作
const { result } = await container.items.bulk(operations)
- V3之前较旧版本的SDK:
旧版本中不存在Container.items.bulk()方法,获取到所有items后,需要对这些items分别进行修改。可以使用循环,但如果数据量较大,循环耗时太多,所以选择使用promise.all()方法并发操作。
const { resources: items } = await container.items.query(querySpec).fetchAll(); // 根据条件查询所有符合的数据
const promises = items.map(async (item) => {
item.isDelte = "true"; // 标记删除
return container.item(item.id).replace(item);
});
// 使用Promise.all并发执行所有的替换操作
await Promise.all(promises);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结