克里姆林宫选择性遍历

问题描述 投票:0回答:1

这可能是菜鸟格雷姆林的问题:

假设我有这张图

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。

gremlin graph-databases tinkerpop
1个回答
2
投票

具有较小的样本图会很有帮助。这是与您的问题匹配的一个。

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] 
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.