我将父顶点(P)连接到子顶点(C1,C2,C3,... Cn)(通过传出边标签“dep”),其中Cn可能非常大。这些子顶点(C1,C2,..)可以通过输出边缘标签“frnds”连接或不连接到其他顶点。在Gremlin中有没有办法找出(P)的所有Child顶点,它们没有任何标记为“frnds”的边缘?
此致 库马尔
答案 0 :(得分:3)
玩具图表:
g = new TinkerGraph()
p = g.addVertex('p')
c1 = g.addVertex('c1')
c2 = g.addVertex('c2')
c3 = g.addVertex('c3')
o1 = g.addVertex('o1')
o2 = g.addVertex('o2')
g.addEdge(p, c1, 'dep')
g.addEdge(p, c2, 'dep')
g.addEdge(p, c3, 'dep')
g.addEdge(c1, o1, 'frnds')
g.addEdge(c1, o2, 'frnds')
g.addEdge(c2, o2, 'frnds')
您的查询说明的解决方案(可能不是最聪明的):
r = []; g.v('p').out('dep').store(r).outE('frnds').outV.sideEffect{r.remove(it)}
输出:
r
==>v[c3]
更新: 比较短的版本,可能也更有效:
g.v('p').out('dep').filter{!it.outE('frnds').hasNext()}
==>v[c3]
答案 1 :(得分:0)
g.v('p')。out('dep')。filter {!it.outE('frnds')。hasNext()}。range(0,100)查询在你的范围内更快。它将获得100个没有传出边的顶点