如何更新Cosmos DB文档分区键元素?

时间:2019-01-26 21:42:37

标签: azure azure-cosmosdb

我需要更新一个文档,更改用作分区键的元素的值。该文档说,文档由其ID和分区键唯一标识。

因此,如果我更改分区键,这将始终创建新文档吗? 还是仅将新文档放在另一个分区上才创建新文档?

如果总是创建一个新文档,那么我认为最安全的更新方法是

  1. 创建新文档。
  2. 如果成功,则删除旧文档。
  3. 删除失败将导致重复数据,但至少不会丢失数据。

如果并非总是创建一个新文档,那么如何确定创建新文档的情况,以便删除旧文档?我不想删除任何东西而不先创建新的东西,因为没有事务性的方式可以做到这一点。

关于所有。

1 个答案:

答案 0 :(得分:1)

尝试更新分区键值只会失败。 尝试向上插入分区键值将在不同的逻辑分区中创建一个具有相同ID的新文档。

该过程应该是:

  • 将旧文档保留在内存中
  • 删除旧文档
  • 创建新文档
  • 如果以后失败,请重新创建旧文档

Cosmos DB不支持事务,因此否则无法执行此操作,并且您无法使用存储过程,因为它们仅在单个逻辑分区上运行。