是否可以使用 Cosmos 的 DB SQL 查询树层次结构的任何子节点,而不考虑深度?

Is it possible to query any sub node of a tree hierarchy, irresponsive of depth, using Cosmos' DB SQL?

给定分层 JSON 结构:

{
  id = 1,
  text = "Root",
  children = [
    {
      id = 2,
      nodeType = "foo",
      children = [
        {
          {
            id = 3,
            nodeType = "foo",
            children = [
              {
              }
            ]
          },
          {
            id = 6,
            nodeType = "bar",
            children = [
              {
              }
            ]
          }
        }
      ]
    },
    {
      id = 4,
      nodeType = "foo",
      children = [
        {
        }
      ]
    }
  ]
}

层次结构的深度未知。使用 Cosmos SQL 查询,是否有一种(高效的)方法来查找所有子对象的 ID,其中 nodeType == foo,这将导致 ID 2、3 和 4?

我认为结构不对,我最好将子对象保存为平面数组并将树信息分开。

as @Mark Bwown 在评论区,没有好的或最好的方法满足您的要求。发帖帮助其他社区成员。

唯一推荐的方法是只查询根,将其反序列化为动态类型,然后在代码中遍历它以检查非空类型或非空数组。

虽然它没有直接回答您关于在 CosmosDB 上使用 Azure SQL 执行此操作的问题。我建议你使用cosmosdb支持的mongo api。这为您提供了子节点数据的完整功能过滤。 这里的例子:https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb/tutorial-query-mongodb