【问题标题】:How to perform join operation similar to SQL join in Azure DocumentDB如何在 Azure DocumentDB 中执行类似于 SQL 连接的连接操作
【发布时间】:2015-12-12 18:50:31
【问题描述】:

我在 Azure DocumentDB 中有一个集合,其中的文档使用名为 clusterName 的 JSON 属性将文档聚集成 3 个集合。 3 组文档的模板有点像这样:

{ "clusterName": "客户信息", "id": "CustInfo1001", “客户名称”:“XXXX” },

{ "clusterName": "区域信息", "id": "ZoneInfo5005", “区域名称”:“YYYY” },

{ "clusterName": "CustomerZoneAssociation", "id": "CustZoneAss9009", "custId": "CustInfo1001", “zoneId”:“ZoneInfo5005” }

您可以看到 CustomerZoneAssociation 的文档将 CustomerInformationZoneInformation 的文档与它们的 Id 链接起来。我需要帮助查询来自 CustomerInformation 和 ZoneInformation 集群的信息,这要借助它们在 CustomerZoneAssociation 集群中关联的 Id 。我期待的查询结果是:

{ "clusterName": "CustomerZoneAssociation", "id": "CustZoneAss9009", "custId": "CustInfo1001", "custName": "XXXX", "zoneId": "ZoneInfo5005", “区域名称”:“YYYY” }

请提出一个仅需 1 次即可访问 DocumentDB 的解决方案

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    DocumentDB 不支持文档间 JOIN... 相反,JOIN 关键字用于执行文档内交叉产品(用于嵌套数组)。

    我会推荐以下方法之一:

    • 请记住,您不必像使用传统 RDBMS 那样标准化每个实体。可能值得重新审视您的数据模型,并在适当的情况下对部分数据进行非规范化。还要记住,反规范化有其自身的权衡(扇出写入与发出后续读取)。查看以下 SO 答案,了解更多关于 tradeoffs between normalizing vs de-normalizing data 的信息。

    • 编写一个存储过程来批处理单个网络请求中的一系列操作。查看code sample on this approach 的以下 SO 答案。

    【讨论】:

    • 第二个要点中的代码示例没有进行跨表连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2013-09-28
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多