【问题标题】:CosmosDB Join (SQL API)CosmosDB 连接 (SQL API)
【发布时间】:2018-08-28 07:48:23
【问题描述】:

我正在通过 SQL API 使用 CosmosDB,并且我正在尝试加入两个集合。我在文档中看到了连接示例,但没有得到实际外观。

请求日志

{
"DateTimeStamp": "2018-03-16T10:56:52.1411006Z",
"RequestId": "8ce80648-66e2-4357-98a8-7a71e8b65301",
"IPAddress": "0.0.0.173"
}

响应日志

{
"DateTimeStamp": "2018-03-16T10:56:52.1411006Z",
"RequestId": "8ce80648-66e2-4357-98a8-7a71e8b65301",
"Body": "Hello"
}

可以同时加入这两个集合吗?怎么样?

【问题讨论】:

    标签: azure azure-cosmosdb


    【解决方案1】:

    在 Azure Cosmos DB 中,联接的范围仅限于单个项目。 不支持跨项目和跨容器联接。 check documentation here

    【讨论】:

      【解决方案2】:

      实际上 Cosmos DB JOIN 操作仅限于单个文档的范围。您可以将父对象与同一文档下的子对象连接起来。

      支持跨文档连接,因此您必须自己实现此类查询。

      【讨论】:

        【解决方案3】:

        不可能跨 Cosmos 中的多个集合编写连接查询,甚至不能跨单个集合中的多个文档编写连接查询。您在这里唯一的选择是发出单独的查询(最好是并行),或者如果您的文档一起存在于同一个集合中,您可以使用公共 RequestId 属性检索请求的所有相关日志。

        SELECT * from c WHERE c.RequestId = '8ce80648-66e2-4357-98a8-7a71e8b65301'

        这仅在文档中的对象结构相同时才有效。在此示例中,这是可能的,因为它们共享一个名为 RequestId 的同名属性。您不能对任意属性执行 JOIN。

        【讨论】:

        • “最好并行”你能解释一下你是如何在 Cosmos DB SQL Api 中做到这一点的吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-25
        • 2021-12-11
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 2019-07-11
        • 2018-01-26
        相关资源
        最近更新 更多