如何从 Cosmos DB 中的两个容器进行查询(SQL API)

问题描述 投票:0回答:4

我是 Cosmos db 的新手。我选择了 cosmos db(核心 sql),创建了一个具有两个容器的数据库,即 EmployeeContainer 和 DepartmentContainer。现在我想查询这两个容器,并希望获取员工详细信息以及关联的部门详细信息。我坚持了一个观点,需要帮助。

下面是我的容器的结构。
员工容器:ID、姓名、部门ID
部门容器:ID、名称

提前致谢。

azure-cosmosdb azure-cosmosdb-sqlapi
4个回答
24
投票

Cosmos DB 不是关系数据库。如果一起查询不同的实体,则不会将它们存储在不同的容器中。它们要么嵌入到其他实体中,要么使用与同一容器中的其他实体共享的分区键存储为单独的行。

在深入了解 Cosmos 之前,您需要了解如何对数据进行建模和分区,以确保获得最佳性能。我强烈建议您阅读有关分区的文档,并特别阅读下面的这些文档。

Cosmos DB 中的数据建模

Cosmos DB 中的分区

如何建模和分区数据 - 一个现实世界的示例

并观看 Cosmos DB 中的数据建模 - 每个关系开发人员都应该了解的知识


0
投票

这完全取决于您尝试建模的数据类型。一般来说,这取决于关系。 1:1 或 1:few 通常最适合嵌入相关项目或一起更新查询。 1:many或many:many用于引用相关项独立查询或更新。

有关这些问题的精彩演讲请查看 https://www.gotcosmos.com/conf/ondemand


0
投票

如果您在一个数据库中有两个容器,那么这很容易实现。这取决于您使用什么语言来创建 api 。您可以创建一个api来连接两个2数据库,然后在2nd数据库中查询第一个结果。 您还可以使用 graphql 创建 api 和查询容器,.


-2
投票

您可以使用子查询。

https://learn.microsoft.com/en-us/azure/cosmos-db/sql-query-subquery#mimic-join-with-external-reference-data

但这可能会消耗大量的RU。目前只有内部连接。

© www.soinside.com 2019 - 2024. All rights reserved.