如果在ArangoDB中有顶点(例如:Star,Movie)和边缘(例如:star_in,director,...),如何查询由某人主演和导演的电影?

时间:2018-05-08 03:17:21

标签: arangodb

如果ArangoDB中有顶点(例如:Star,Movie)和边缘(例如:star_in,director,producer),我想要获得由周星驰主演和导演的电影,那么如何编写查询语句? / p>

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用AQL NEIGHBORS功能:

FOR n IN ANY @startId @@edgeCollection OPTIONS {bfs:true,uniqueVertices: 'global'}
RETURN n._id

ANY/INBOUND/OUTBOUND确定边的方向,而@startId是您的起始顶点(在本例中为Stephen Crow),@@ edgecollection是您使用的边集合。

当应用两个条件(主演和指导)时,可以使用两个NEIGHBOR查询的交叉。

以下AQL查询是您的用例的草稿:

FOR x IN INTERSECTION
  ((FOR y IN ANY 'star/StephenChow' star_in OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id),
  (FOR y IN ANY 'star/StephenChow' director OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id))
  RETURN x

可以在文档的Cookbook部分找到正在运行的Actor / Movie示例。