Azure 函数更新文档中的 CosmosDB SQL 数组

Azure function update CosmosDB SQL array in document

我正在使用 Azure Functions 和 Cosmos DB SQL 通过 javascript 创建无服务器应用程序。

我有以下 user 项的数据库模式:

{
    "id": "user_id_2",
    "username": "username_2",
    "pass": "pass_1",
    "feed": [],
    "followed": [
        "username_1",
        "username_3",
        "username_4"
    ],
    "followers": [
        "username_3",
        "username_4"
    ]
}

当前,当 user_1 跟随另一个 user_2 时,我更新 user_1 的数据库文档 - 没问题。但现在我还需要更新 user_2 的文档,尤其是字符串数组 - followers。我怎样才能通过带有绑定的 azure 函数来做到这一点?我想出的唯一方法是查询整个文档的数据库,在客户端更新它,然后放回数据库,覆盖以前的文档。然而,这似乎很荒谬...

Cosmos DB 目前不支持部分更新,因此拉取文档、将项目添加到数组然后执行 PUT 是唯一的选择。

话虽如此,您的数据设计的问题在于 followedfollowers 无界数组 ,您的用户规模可以不受限制地增长。尺寸越大,操作所需的 RU 越多。

请在此处查看何时不嵌入https://docs.microsoft.com/azure/cosmos-db/modeling-data#when-not-to-embed

我在创建社交应用程序时写了一份社交应用程序的设计文档:https://docs.microsoft.com/azure/cosmos-db/social-media-apps

理想情况下,A 跟随 B 的关系将是它自己的文档。您可以将它们存储在 Graph 帐户中以获得最佳性能,因为您在这里真正构建的是一个图表,您将要进行的查询 运行 是 "Who follows B?" 或 "Who follows my followers?".