Результат запроса arangodb self join - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь самостоятельно присоединиться, объединить родительское поле и получить результаты в виде данных отдельных документов:

[
{_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"},
}

можно ли это сделать в arangodb?

1 Ответ

0 голосов
/ 18 августа 2020

здесь вы можете найти примеры того, как присоединяться к коллекциям (и self присоединяется дальше по странице).

В вашем конкретном случае запрос может выглядеть примерно так:

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]
})
...