CosmosDB 连接 (SQL API)

Posted

技术标签:

【中文标题】CosmosDB 连接 (SQL API)【英文标题】:CosmosDB Join (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"

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

【问题讨论】:

【参考方案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 中做到这一点的吗?

以上是关于CosmosDB 连接 (SQL API)的主要内容,如果未能解决你的问题,请参考以下文章

Azure 为连接到 CosmosDB 的标准逻辑应用生成 URL

将 CosmosDB const 连接字符串注入 Azure Function V4 CosmosDB 输入/输出绑定?

从 Spark 错误更新到 CosmosDB

Azure CosmosDB (11) MongoDB概念

[CosmosDB]如何导出数据

带有 MongoDB API 的 CosmosDB