首页 > 解决方案 > 如果ArangoDB中有顶点(例如:明星,电影)和边(例如:star_in,导演,...),如何查询由某人主演和导演的电影?

问题描述

如果ArangoDB中有顶点(例如:明星,电影)和边(例如:star_in,导演,制片人),我想得到周星驰主演和导演的电影,如何编写查询语句?

标签: arangodb

解决方案


在这种情况下,您可以使用 AQL NEIGHBORS 函数:

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

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

当应该应用两个条件(星号和定向)时,可以使用两个 NEIGHBOR 查询的 INTERSECTION。

以下 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 示例。


推荐阅读