假设文档具有以下架构
{
"id": 1,
"children":[
{"id": "a", "name":"al"},
{"id": "b", "name":"bob"}
]
}
我想返回一个包含所有子级的数组,但在根级别的 id 属性上进行了过滤。以下是最知名的替代方案和限制:
SELECT * FROM c.children
上面的 SQL 提供了正确形状的数组数组,但它不允许我在文档的 ROOT 级别中的 ID 进行过滤。
SELECT children FROM c WHERE c.id >= 1
以上允许过滤,但返回一个对象数组,所有对象都带有包含该数组的“children”属性。
SELECT child.id, child.name FROM c JOIN child in c.children WHERE c.id >= 1
以上允许过滤,但返回一个对象数组。与前面的示例不同,对象被展平到子级别,例如名为“children”前缀的属性不存在。
同样,返回数组中的排序和分组子项在客户端很重要,因此希望将父项的所有子项返回到一个数组中。第一个查询实现了不允许过滤。
答案 0 :(得分:1)
请试试这个 SQL:
SELECT value c.children FROM c WHERE c.id >= 1
结果:
[
[
{
"id": "a",
"name": "al"
},
{
"id": "b",
"name": "bob"
}
]
]