Как отобразить все дочерние / родительские узлы данного узла полностью вложенной иерархии в arangodb - PullRequest
1 голос
/ 26 января 2020

У нас есть коллекция ребер "ChildEvents" с 999999 записями

Структура:

_from: events / 1, _to: events / 2

_from: events / 2 , _to: events / 3

В этой структуре узел-1 является супер-родительским, а узел-2 является дочерним по отношению к узлу-1, а узел-3 является дочерним по отношению к 2. (Вложенная иерархия сверху вниз)

1 -> 2 -> 3 -> 4 -> .... 999999

Мое требование - отобразить все вложенные родительские / или дочерние элементы данного узла. Например. Если я предоставляю узел 4, запрос должен отображать дочерние элементы от узла 5 до узла 999999. (у меня это было в neo4J databse, работающем с использованием запроса на совпадение).

Но в arangoDB, когда я пытался добиться этого с помощью приведенного ниже запроса, он возвращал только 2 записи.

**** FOR v IN OUTBOUND "events / 350" any ChildEvents RETURN v ****

Может ли кто-нибудь помочь в этом? Ваша помощь очень ценится.

1 Ответ

1 голос
/ 31 января 2020

Запросы обхода требуют, чтобы вы объявили значение min (в моем примере "0"), но для удовлетворения ваших требований вам также необходимо объявить значение max (999999) (см. Здесь документы ). ).

Кроме того, термин any не используется таким образом, тем более что вы ищете исходящие отношения (исходящие от родительский до дочерний).

FOR v IN 0..999999 OUTBOUND 'events/350'
    ChildEvents
    RETURN v
  1. Находит узел с _key = '350' из коллекции 'events'
  2. Возвращает начальный узел ('events / 350')
  3. Возвращает все дочерние узлы 'events / 350' (все 999 648 из них)

Вам не нужно предоставлять Точное число для значения «max» - это просто верхний предел для количества пройденных ребер.

Если этот запрос не работает для вас, тогда я предлагаю более внимательно взглянуть на ваши ребра. Возможно, у вас разрыв или неправильное направление (поменяно местами _from & _to).

...