【问题标题】:cosmosdb bulkdelete without partitionkey没有分区键的 cosmosdb 批量删除
【发布时间】:2023-03-21 20:55:01
【问题描述】:

我正在尝试使用 cosmosdb 集合上的存储过程执行查询文档批量删除。我使用了这里的示例代码。

https://github.com/Azure/azure-documentdb-js-server/blob/master/samples/stored-procedures/bulkDelete.js

当我尝试执行查询时,我不得不提供一个我不知道的分区键。我想根据不包括分区键的查询条件执行扇出删除查询。还有哪些其他方法可以尝试从 cosmosdb 集合中批量删除文档?

【问题讨论】:

    标签: azure azure-cosmosdb


    【解决方案1】:

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

    你可以参考上面提到here的描述。

    当然,如果你的集合已经分区了,那么你在操作其中的集合或文档时也需要提供分区键。更多详情来自here

    所以,根据你不知道分区键的情况,我建议你在执行删除时将FeedOptions中的EnableCrossPartitionQuery设置为true。(有性能瓶颈)

    希望对你有帮助。

    【讨论】:

    • 现在,当我们从 Python 调用时,我们正在以下选项中设置 'EnableCrossPartitionQuery='True'。它仍然显示错误。 pydocumentdb.errors.HTTPFailure: Status code: 400 {"code":"BadRequest","message":"PartitionKey value must be supplied for this operation.
    • 这有意义吗?我在进行存储过程调用的过程中遗漏了什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多