Azure Cosmos DB - 使用附加字段更新现有文档

191*_*0rk 5 azure azure-cosmosdb

现有的 Cosmos DB 文档需要使用新属性进行更改/更新,其他集合的现有文档也需要使用相同的新属性及其值进行更新。

是否有任何推荐的方法或工具可用于更新 Cosmos DB 上的现有文档,或者使用 Cosmos DB SDK 编写自定义 c# 应用程序/PowerShell 脚本是唯一的选择?

例子:

现有user文件

{
   id:user1@mail.com,
   name: "abc",
   country: "xyz"
}  
Run Code Online (Sandbox Code Playgroud)

更新user文档

{
   id:user1@mail.com,
   name: "abc",
   country: "xyz",
   guid:"4334fdfsfewr"  //new field
} 
Run Code Online (Sandbox Code Playgroud)

现有order文件user

{
   id:user1@mail.com,
   user: "user1@mail.com",
   date: "09/28/2020",
   amt: "$45"
}  
Run Code Online (Sandbox Code Playgroud)

更新的order文件user

{
   id:user1@mail.com,
   user: "user1@mail.com",
   userid: "4334fdfsfewr",  // new field but with same value as in user model
   date: "09/28/2020",
   amt: "$45"
}  
Run Code Online (Sandbox Code Playgroud)

dee*_* zg 2

我可能会选择:

  1. 通过脚本更新用户文档
  2. 具有带有 Cosmosdb 触发器的 Azure 函数,可以侦听用户文档的更改并相应地更新订单

[更新] 无论您最喜欢哪种类型的脚本:PS、C#、Azure Functions...现在,您的意思是它们需要“同时”使用新属性进行更改?我不确定这是否可能。如果你想要这样的效果那么我想你最好的选择是:

  1. 为用户创建新的集合/容器
  2. 有一个 Azure 函数,用于侦听现有用户容器的更改源(因此,使用StartFromBeginning选项)
  3. 更新您的文档以添加新字段并将其存储在新创建的容器中
  4. 完成后,将您的应用程序切换为使用新容器

您可以选择如何更改其他集合(订单):使用旧用户或新用户容器中的changeFeed和Azure功能。

附言。是的,无论我采用什么流程,它仍然是带有 Cosmos DB 触发器的 Azure Functions。