Как я могу создавать ребра внутри коллекции программно в ArangoDB? - PullRequest
0 голосов
/ 30 сентября 2019

Предположим, я создаю коллекцию для хранения семейного древа (важны только родительские отношения). У меня есть коллекция вершин с именем people и коллекция ребер с именем edges.

Документ в коллекции людей выглядит следующим образом:

{"name" : "xyz", "age": 12, "uniqueid": 10011, "parent_uniqueid": 9808}

Как лучше всего заполнитьedges коллекция AQL с использованием атрибутов uniqueid и parent_uniqueid.

1 Ответ

0 голосов
/ 09 октября 2019

В приведенном ниже запросе предполагается, что для каждого узла p в people,

  1. p._id = p.uniqueid,
  2. p.parent_uniqueid = (parent of p)._id (если p имеет родителя).
FOR p in people
FILTER HAS(p, 'parent_uniqueid')
LET edges = (
  FOR e in edges
  FILTER e._from == p.parent_uniqueid and e._to == p._id
  RETURN 1
)
FILTER LENGTH(edges) == 0
INSERT {_from: p.parent_uniqueid, _to: p._id} into edges

Проверьте параметры для предложения INSERT в https://www.arangodb.com/docs/stable/aql/operations-insert.html#setting-query-options, чтобы увидеть, может ли какой-либо из них применяться к вашему делу.

...