【问题标题】:Delete Documents from Cosmos using Query without Partition Key Specification使用没有分区键规范的查询从 Cosmos 中删除文档
【发布时间】:2019-11-05 19:19:17
【问题描述】:

我正在尝试使用查询创建一个存储过程来删除 Cosmos Db 中的文档。一旦查询返回文档,我希望删除所有文档。

我尝试使用来自this website 的脚本,但这需要放置一个分区键。我的 Cosmos 集合对每个文档都有一个单独的分区键,因此它不起作用

这是我要运行的查询示例

SELECT c.currentTime, c.pastTime 
FROM C 
WHERE c.currentTime < c.pastTime

如果满足,我想删除该查询的所有结果。

有没有办法创建一个存储过程或修改提供的网站中的存储过程,以便循环遍历所有集合而不是指定一个分区键?

【问题讨论】:

标签: javascript azure-cosmosdb


【解决方案1】:

有没有办法创建存储过程或修改网站中的存储过程 提供,因此它循环遍历所有集合而不是指定 一个分区键?

快速回答是否定的,请看一些官方声明:

1.我之前回答过类似的案例,他们都希望在执行SP时避免这样的分区键要求。但是,这是无法避免的。

Azure Cosmos DB asking for partition key for stored procedure

Cosmos DB Stored procedure did not execute without PartitionKey

如果注册存储过程的集合是 单分区集合,则事务范围为所有 集合中的文档。如果集合是分区的, 然后存储过程在一个事务范围内执行 单个分区键。然后每个存储过程执行必须 包括与范围对应的分区键值 事务必须在下运行。

2.上面的语句和链接已经修改为下面新的document

3.您可以按照官方的建议来了解 Bulk Executor Lib SDK。我在这个source code 中找到了BulkDelete 功能,请尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多