查找两条路径中顶点之间的边

时间:2021-02-15 15:35:51

标签: gremlin

我有一个 DAG 有两种类型的顶点,文件和用户,建模为属性“类型”,值为“文件”和“用户”。有两种类型的边:“父”,从父文件或用户到子文件或用户(父边只能连接两个文件或两个用户,而不是每个用户之一)和“权限”,它指向从文件顶点到用户顶点。权限边缘具有“permissionId”属性。

DAG 根植于 File 顶点。所有文件顶点都有一个到根文件顶点的“父”路径。用户可能有多个父用户,因此有多个路径到根文件顶点。

我想查询将给定文件顶点的祖先(包括其自身)连接到给定用户顶点的祖先(包括自身,不包括根文件顶点)的所有权限边的所有权限标识

我看到一种方法可以通过多个查询来做到这一点

// get File ancestors
g.V(fileId).repeat(in("parent")).until(eq(<root file ID>)).path()
// get User ancestors
g.V(userId).repeat(in("parent")).until(eq(<root file ID>)).path()
// get Permission edges between them
g.V().within(<File ancestors>).outE("permission").emit().outV(within(<User ancestors>))

但是有没有办法在一个查询中做到这一点?

0 个答案:

没有答案