当前位置: 首页 > 知识库问答 >
问题:

在Cosmos DB中的一个查询中选择相关文档

松和安
2023-03-14

考虑以下数据结构:

[   
    {
        "id": "parent",
        "links":[{
                "href": "child"
            }]
    },
    {
        "id": "child",
        "links":[{
                "href": "grand_child"
            }]
    },
    {
        "id": "grand_child",
        "links":[]
    },
    {
        "id": "some-other-item",
        "links":[{
            "href": "anywhere"
        }]
    }
]

是否有办法使用Cosmos DBSQL在单个查询中选择与“父”相关的所有文档?结果必须包括父、子和grand_child文档。

共有1个答案

程阳平
2023-03-14

这里假设OP中显示的JSON数组是集合中的文档数组。

否,这不能使用SQLAPI查询工具来完成。CosmosDB不支持连接不同的文档,更不支持递归连接。CosmosDBSQL中的连接是自连接。

但是,如果您确实需要在服务器端实现这一点,那么您可以通过将递归收集算法编写为已用定义函数来实现它。

我建议只在客户端实现它,每个深度单个查询并合并结果。这也保持了逻辑和数据的良好分离,如果您在单个查询中正确查询所有新链接以避免(1N),则性能应该是可以接受的。

如果您的实际需要在图形遍历上变得更加复杂,那么您必须将文档(或只是链接)迁移到其他能够查询图形的地方(例如:Gremlin API)。

 类似资料:
  • 问题内容: 我有两个用于查询表中行的SQL查询,具体取决于类型2或3。 查询1: 查询2: 现在,我只想获取和使用一个查询的值。如何使用一个查询获得计数。有没有办法做到这一点。我正在使用SQLite数据库。 编辑: 我想要分别为和的值,而不是两者都在一起(不使用)。 问题答案: 尝试使用 对于两个变量:

  • 问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询

  • 问题内容: 我正在运行此查询 但这不是我想要的结果,它返回多行。 我的一张桌子看起来像这个名字: 另一个表看起来像这个名字: 我如何使其选择查询,以便可以从两个表中获取与之相关的所有值,并使它看起来像这样 所需的输出: 谢谢!(提前!) 问题答案: 为您提供所需的输出(但这并不灵活,因此,如果添加要输出的更多详细信息,将无法进行更改而不进行更改):-

  • 我创建了一个包含标题字段和文本字段的文档弹性搜索索引。给定一个查询,我的搜索的期望行为是首先检查title字段,如果有任何文档的标题与查询“良好”匹配,那么这些文档必须排在前面。只有在良好的标题匹配之后,才应该返回具有良好文本匹配的文档。 通过“良好的标题匹配”,我的意思是类似于“查询接近标题的某个子集,其中接近意味着levinshtein距离小于某个给定数字”。这是一个阈值条件。因此,标题要么是

  • 问题内容: 主题表 SubjectToClass表 我需要列出的所有行,其中的表是不是在指定类的表。 我有这个但不能再走了 问题答案:

  • 问题内容: 我正在用php(mysql)生成报告, 例如: 这样我有12张桌子。 我可以在单个查询中做到吗。如果我做到了?过程变慢了吗? 问题答案: