没有 属性 名称的嵌套数组上的 Cosmos DB SQL

Cosmos DB SQL on nested array without property name

假设文档具有以下架构

{
  "id": 1,
  "children":[
       {"id": "a", "name":"al"},
       {"id": "b", "name":"bob"}
   ]
}

我想return所有children的数组,但在根级别过滤id 属性。以下是最知名的替代方案和限制:

SELECT * FROM c.children

以上 SQL 提供了正确形状的数组数组,但它不允许我在文档 ROOT 级别的 ID 处进行过滤。

SELECT children FROM c WHERE c.id >= 1

上面允许过滤,但是 return 是一个 objects 的数组,全部带有“children” 属性 包含数组。

SELECT child.id, child.name FROM c JOIN child in c.children WHERE c.id >= 1

以上允许过滤,但 return 是 objects 的数组。与前面的示例不同,objects 被展平到 child 级别,例如属性“children”的命名前缀不存在。

returned 数组 returned 中的排序和分组 children 在客户端很重要,因此需要 return 所有 children of a parent 分组到一个数组中。第一个查询完成是不允许过滤的。

请试试这个SQL:

SELECT value c.children FROM c WHERE c.id >= 1

结果:

[
    [
        {
            "id": "a",
            "name": "al"
        },
        {
            "id": "b",
            "name": "bob"
        }
    ]
]