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

问题描述 投票:0回答:1

我正在使用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"
    ]
}

[当前,当一个用户_1跟随另一个用户_2时,我为用户_1更新了数据库文档-没问题。但是现在我还需要更新user_2的文档,尤其是字符串数组-followers。如何通过带有绑定的azure函数来做到这一点?我想到的唯一方法是在数据库中查询整个文档,在客户端进行更新,然后将其重新放入数据库中,从而覆盖之前的文档。但是,这似乎很荒谬...

javascript azure azure-functions azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

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

话虽如此,数据设计的问题在于followedfollowersunbounded arrays,您的用户规模可能不受限制地增长。大小越大,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帐户上以获得最佳性能,因为您真正在此处构建的是图形,并且您将要运行的查询是“谁跟随B?”。或“谁跟随我的追随者?”

© www.soinside.com 2019 - 2024. All rights reserved.