Arangodb AQL查询多个边缘定义

时间:2018-09-26 10:20:47

标签: arangodb aql

我还是数据库和arangodb图形数据库的新手。 我尝试查询具有不同边定义的图形,但没有找到任何示例。查询以获取我找到的一条边的结果。

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

例如: 我有“人”,“车”和“房子”的顶点,还有“ has_car”(人->汽车)和“ lives_in”(人->房子)的顶点。为了测试,我创建了三个图。每个边缘定义一个,两个边缘定义一个。

我的问题:什么是正确的查询方式:

  1. 拥有“宝马”并住在“城堡”中的人
  2. 住在“摩天大楼”中并且没有汽车的人
  3. 住在“摩天大楼”中但没有“宝马”的人

谢谢。

1 个答案:

答案 0 :(得分:0)

如果从头开始怎么办?这样,您可以检查whole path

例如,以下是从宝马汽车开始的(第一个问题)

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