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

Azure cosmosdb 如何从Cosmos DB(SQL API)中的两个容器进行查询,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我是宇宙数据库的新手。我选择了cosmos db(核心sql),创建了一个包含两个容器的数据库,即EmployeeContainer和DepartmentContainer。现在我想查询这两个容器,并获取员工详细信息和相关的部门详细信息。我坚持一个观点,需要帮助 下面是我的容器的结构。 员工容器:ID、姓名、部门ID 部门容器:ID,名称 提前感谢。Cosmos DB不是关系数据库。如果同时查询不同的实体,则不会将它们存储在不同的容器中。它们要么嵌入到其他实体中,要么使用与同一容器中的其他实体共

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

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


提前感谢。

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

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


而watch

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

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

和watch

您可以使用子查询

但这可能会消耗大量RU。现在只有内部联接。

您可以使用子查询


但这可能会消耗大量RU。现在只有内部连接。

你为什么要参加thees 2?既然你打算使用cosmosdb,为什么不存储在同一个文档中?@Sajeetharan我这样做了,在emp和dept之间保持了一种关系。我尝试了与SQL相同的方法。在单个文档中,我们可以使用join进行查询,但我没有找到查询两个不同容器的方法。有什么想法吗?有什么理由让你坐在2号座位上吗?既然你打算使用cosmosdb,为什么不存储在同一个文档中?@Sajeetharan我这样做了,在emp和dept之间保持了一种关系。我尝试了与SQL相同的方法。在单个文档中,我们可以使用join进行查询,但我没有找到查询两个不同容器的方法。你想说我应该在一个文档中保存主数据,在其他文档中保存关系数据,并且每个文档应该位于同一个容器中吗。是这样吗。在这种情况下,我看不到使用多个容器。我试图将所有主数据(如部门)保存在一个容器中,将所有关系数据保存在另一个容器中,以便将内容分开,然后使用一些关系从两个容器中进行查询,就像我们在SQL、Oracle等其他数据库中所做的那样。如果不更深入地理解您的应用程序,就不可能回答您的问题。您只需要问问自己,您是如何最频繁地访问数据的。如果在表单或屏幕与其他主数据一起加载时访问部门主数据,那么您可能应该将所有这些数据存储在一个容器中并一起查询。顺便说一句,您还可以将这些数据保存在多个位置,然后使用changefeed在多个位置存储的数据之间保持“引用完整性”。希望这能有所帮助。让我想想这个方法,但为了这个,我必须重新设计一切。我正在考虑一种解决方案,所有主数据保存在一个容器中,所有相关数据保存在单独的容器中。但宇宙似乎没有什么局限性,或者你可以用不同的方式来看待事物。但是顺便问一下,为什么会有第二个容器,它只是将事物分开,实际上没有关系。你想说我应该将主数据保存在一个文档中,将关系数据保存在其他文档中,并且每个文档都应该驻留在同一个容器中吗。是这样吗。在这种情况下,我看不到使用多个容器。我试图将所有主数据(如部门)保存在一个容器中,将所有关系数据保存在另一个容器中,以便将内容分开,然后使用一些关系从两个容器中进行查询,就像我们在SQL、Oracle等其他数据库中所做的那样。如果不更深入地理解您的应用程序,就不可能回答您的问题。您只需要问问自己,您是如何最频繁地访问数据的。如果在表单或屏幕与其他主数据一起加载时访问部门主数据,那么您可能应该将所有这些数据存储在一个容器中并一起查询。顺便说一句,您还可以将这些数据保存在多个位置,然后使用changefeed在多个位置存储的数据之间保持“引用完整性”。希望这能有所帮助。让我想想这个方法,但为了这个,我必须重新设计一切。我正在考虑一种解决方案,所有主数据保存在一个容器中,所有相关数据保存在单独的容器中。但宇宙似乎没有什么局限性,或者你可以用不同的方式来看待事物。但顺便问一下,为什么会有第二个容器,它只是把东西分开,实际上没有关系。它会连接两个单独的容器吗?它会连接两个单独的容器吗。