Arangodb AQL Query для нескольких определений ребер - PullRequest
0 голосов
/ 26 сентября 2018

Я новичок в графовых базах данных и arangodb тоже.Я пытаюсь запросить график с различными определениями ребер и не нашел никакого примера для этого.Запрос для получения результата для одного ребра я нашел.

FOR p IN person
  FOR vx, ex, px IN ANY p GRAPH "test" FILTER vx.brand == "BMW" RETURN DISTINCT p

Например: У меня есть вершины "персона", "машина" и "дом" и ребра "has_car" (человек-> машина) и "life_in "(человек-> дом).Чтобы попробовать, я создал три графика.Один для каждого определения ребра и один с обоими определениями ребра.

Мой вопрос : Как правильно запрашивать:

  1. Лица, имеющие "BMW""и живут в" Замке "
  2. Лица, которые живут в" Небоскребе "и не имеют машины
  3. Лица, которые живут в" Небоскребе "и не имеют"BMW "

Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2018

Что делать, если вы начали с конца?Таким образом, вы можете проверить весь путь .

, например, следующий пример начинается с автомобиля BMW (для первого вопроса)

for car in Car filter car.brand=="BMW"
  for v,e,p in 0..2 any car._id graph 'test'
    filter p.edges[0]!=null && is_same_collection('has_car', p.edges[0])
    && p.vertices[1]!=null && is_same_collection('Person', p.vertices[1])
    && p.edges[1]!=null && is_same_collection('lives_in', p.edges[1])
    && p.vertices[2]!=null && p.vertices[2].house=="Castle"
  return distinct(p.vertices[1])
...