如何在Azure DocumentDB中执行类似于SQL连接的连接操作

时间:2015-09-16 09:12:31

标签: azure-cosmosdb

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

{ “clusterName”:“CustomerInformation”, “id”:“CustInfo1001”, “custName”:“XXXX” },

{ “clusterName”:“ZoneInformation”, “id”:“ZoneInfo5005”, “zoneName”:“YYYY” },

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

您可以看到 CustomerZoneAssociation 的文档将 CustomerInformation ZoneInformation 的文档与其ID相关联。我需要帮助在CustomerInformation和ZoneInformation集群中查询来自CustomerZoneAssociation集群中关联的Id的信息。我期待的查询结果是:

{ “clusterName”:“CustomerZoneAssociation”, “id”:“CustZoneAss9009”, “custId”:“CustInfo1001”, “custName”:“XXXX”, “zoneId”:“ZoneInfo5005”, “zoneName”:“YYYY” }

请建议只需1次访问DocumentDB的解决方案

1 个答案:

答案 0 :(得分:6)

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

我建议采用以下方法之一:

  • 请记住,您不必像使用传统RDBMS那样对每个实体进行规范化。值得重新审视您的数据模型,并在适当的时候对数据的某些部分进行反规范化。还要记住,去规范化伴随着自己的权衡(散布写入与发布后续读取)。请查看以下SO答案,详细了解tradeoffs between normalizing vs de-normalizing data

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