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