Gremlin 如何获取未连接到x的节点

Gremlin 如何获取未连接到x的节点,gremlin,Gremlin,给定节点v1和v2,如何获取Gremlin中的节点“t”,这些节点连接到v1但未连接到v2 t1也可以连接到除v1之外的其他节点,只要它不是v2。我试着用match来解决这个问题: g.V().match( __.as_("a").hasId(v1_id).inE('follows').otherV().as_("t1"), __.as_("b").hasId(v2_id).inE('follows').otherV().as_("t2") ).where('t1', P.neq('t2'))

给定节点v1和v2,如何获取Gremlin中的节点“t”,这些节点连接到v1但未连接到v2

t1也可以连接到除v1之外的其他节点,只要它不是v2。我试着用match来解决这个问题:

g.V().match(
__.as_("a").hasId(v1_id).inE('follows').otherV().as_("t1"), 
__.as_("b").hasId(v2_id).inE('follows').otherV().as_("t2")
).where('t1', P.neq('t2')).select('t1')
但由于某种原因,我犯了一个错误

{GremlinServerError}500:提供的匹配模式无法解决:[MatchStartStep(t1),其中PredictStep(neq(t2)),MatchEndStep,(b),HastStep([~id.eq(1429616)]),JanusGraphVertexStep(IN,[follows],edge),EdgeOtherVertexStep,MatchEndStep(t2)],[MatchStartStep(a),HastStep([~id.eq(1388760)],JanusGraphVertexStep(IN,[follows],边缘),边缘其他顶点台阶,匹配端点台阶(t1)]]

这些步骤本身似乎是正确的,因为它们按预期返回t1/t2:

g.V().match(__.as_("a").hasId(v1_id).inE('follows').otherV().as_("t1"))
.select('t1')
我想我不太明白如何使用2个匹配的连词-请建议


您不需要所有的
match()
复杂性。只需从
v1
开始,遍历到
t
,并验证那些
t
未连接到
v2

g.V(v1_id).in("follows").not(out("follows").hasId(v2_id))

你在这里期待什么结果?在连接到v1的图表中,没有任何东西没有连接到v2。就好像t1没有连接到v2一样-这就是为什么它被涂成红色。假设有很多节点“t”连接到节点“v”。其中一些连接到v1和v2,一些仅连接到v1或v2,而另一些未连接到两者。我想得到所有连接到v1(可能还有其他节点)但不连接到v2的节点“t”。