OrientDB SQL - 如何从内联集合中展开多个属性

OrientDB SQL - How to unwind multiple attributes from an inline collection

假设有一个包含内联对象集合的文档,如下例所示:

{ "name": "Alice", 
  "children": [{ "name": "Bob", "age": 3 }, { "name": "Charlie", "age": 7 }] 
}

我想为集合中的每个项目获取一行,并将每个内部属性作为一个单独的列,例如:

| name    | childName | childAge |
| Alice   | Bob       | 3        |
| Alice   | Charlie   | 7        |

我尝试了以下查询,但它生成了笛卡尔积:

select name, children.name as childName, children.age as childAge
from Employee
unwind childName, childAge

我还设法使用 expandflatten 函数提取了每个子项,但没有引用其父项。

我也想做同样的事情。

我能在 ODB 中找到的最接近的方法是将子项分成顶点,如这个问题所示:

我更愿意按照mongo的处理方式来做(不是我想要的,但是原则就在那里。):

失败的尝试:

  1. select name, children 来自 Test UNWIND children result from query 1
  2. select value.name, value.age 来自 (select expand(children) from Test) result from query 2 如果父级有一个 link 这将起作用,但是 value.$parent returns 为空。

您可以做的最简单的事情如下:

  SELECT name, children.name as childName, children.age as childAge FROM (
    SELECT name, children FROM Employee UNWIND children
  )