没有 属性 名称的嵌套数组上的 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"
}
]
]
假设文档具有以下架构
{
"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"
}
]
]