我在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的解决方案
答案 0 :(得分:6)
DocumentDB不支持文档间JOIN ...相反,JOIN
关键字用于执行文档内交叉产品(与嵌套数组一起使用)。
我建议采用以下方法之一:
请记住,您不必像使用传统RDBMS那样对每个实体进行规范化。值得重新审视您的数据模型,并在适当的时候对数据的某些部分进行反规范化。还要记住,去规范化伴随着自己的权衡(散布写入与发布后续读取)。请查看以下SO答案,详细了解tradeoffs between normalizing vs de-normalizing data。
编写存储过程以批处理单个网络请求中的一系列操作。查看code sample on this approach的以下SO答案。