我正在尝试自联接、合并父字段并将结果作为单独的文档获取数据:
[
{_key="1",name":"a",mf:"xyz"},
{_key="2","name":"b", "parent":"1"},
{_key="3","name":"c", "parent":"1"},
{_key="4",name":"d",mf:"xyzw"},
{_key="5","name":"e", "parent":"4"},
]
查询:
for i in data
let o=i.parent>0 ? (for d in data filter i._key==d.parent return merge(d,{mf:i.mf}) : i
return o
预期结果:
[
{_key="1",name":"a",mf:"xyz"},
{_key="2","name":"b", "parent":"1",mf:"xyz"},
{_key="3","name":"c", "parent":"1",mf:"xyz"},
{_key="4",name":"d",mf:"xyzw"},
{_key="5","name":"e", "parent":"4",mf:"xyzw"},
}
在阿兰戈布可以这样做吗?
在这里,您可以找到关于如何联接集合(以及页面下方的自联接(的示例。
在您的特定情况下,查询可能看起来像这样:
for i in data
return i.parent == null ? i : MERGE(i, {
mf: (for j in data filter j._key == i.parent return j.mf)[0]
})