cosmos db(document db)SQL API中的分层查询

时间:2020-07-20 04:29:08

标签: sql nosql azure-cosmosdb hierarchical-data

我需要查询cosmos db中具有分层链接的容器。

假设我们有餐桌员工:

EMP_ID | MANAGER_ID | NAME
120 | 110 | 'JOHN'
110 | 100 | 'MIKE'
100 | NULL | 'PAM'

如果我查询EMP_ID 100,则查询应返回ID为100或位于“ PAM”下的所有员工。我进行了一些研究,发现ORACLE sql支持CONNECT BY。在postgres中,这可以通过递归CTE来完成。我已经在cosmos db sql API中尝试了这两种方法,但似乎都没有用。 cosmos db中是否有一些开箱即用的支持,可以支持这些类型的查询?

1 个答案:

答案 0 :(得分:0)

您要查看的行为与加入多个文档有关,Cosmos DB中不支持该行为。您已经正确提到了出于相同目的在oracle中使用CONNECT BY。

查询的答案在于正确设计模型以解决上述情况。我鼓励您阅读下面的链接,这些链接在其上都有很好的描述。

  1. self-join on documentdb syntax error
  2. https://docs.microsoft.com/en-us/azure/cosmos-db/modeling-data

但是,如果您使用任何SDK连接到Cosmos DB,则只需编写“ 选择条件查询 ”,然后使用内置库(LINQ或任何其他方式)来根据需要通过 建模结果,尽管不建议这样做。