这可能是菜鸟格雷姆林的问题:
假设我有这张图
A [知道--->] B
A [知道--->] C
D [知道--->] C
[我想遍历此图并找到只有A知道的节点,在这种情况下是B而不是C,因为A和D都知道C。是否可以使用Gremlin做到这一点?
编辑:抱歉,最初我应该在问题中更明确传入边缘的数量实际上可以是可变的。
g.addV('A').as('a')
.addV('B').as('b')
.addV('C').as('c')
.addV('D').as('d')
.addV('E').as('e')
.addV('F')as('f')
.addE('knows').from(a).to(c)
.addE('knows').from(b).to(c)
.addE('knows').from(a).to(f)
.addE('knows').from(b).to(f)
.addE('knows').from(d).to(f).
在这种情况下,我只想要C而不想要F,因为A和B都知道C和F,但是D也知道F,所以我不想要F。
具有较小的样本图会很有帮助。这是与您的问题匹配的一个。
g.addV('A').as('a').
addV('B').as('b').
addV('C').as('c').
addV('D').as('d').
addE('knows').from('a').to('b').
addE('knows').from('a').to('c').
addE('knows').from('d').to('c')
使用该图查询来查找A唯一的朋友可以写成>]
gremlin> g.V().hasLabel('A').
out('knows').
filter(__.in('knows').count().is(1)).
path().
by(label)
==>[A,B]