代码之家  ›  专栏  ›  技术社区  ›  Augusto Will

小精灵:我如何返回顶点及其关联顶点?

  •  0
  • Augusto Will  · 技术社区  · 7 年前

    我需要返回一些组和该组中的人,如下所示:

    Group A
    -----Person A
    -----Person B
    -----Person C
    
    Group B
    -----Person D
    -----Person E
    -----Person F
    

    我怎么能用小精灵做到这一点。它们通过边缘连接到组。

    1 回复  |  直到 7 年前
        1
  •  6
  •   stephen mallette    7 年前

    g.addV('group').property('name','Group A').as('ga').
      addV('group').property('name','Group B').as('gb').
      addV('person').property('name','Person A').as('pa').
      addV('person').property('name','Person B').as('pb').
      addV('person').property('name','Person C').as('pc').
      addV('person').property('name','Person D').as('pd').
      addV('person').property('name','Person E').as('pe').
      addV('person').property('name','Person F').as('pf').
      addE('contains').from('ga').to('pa').
      addE('contains').from('ga').to('pb').
      addE('contains').from('ga').to('pc').
      addE('contains').from('gb').to('pd').
      addE('contains').from('gb').to('pe').
      addE('contains').from('gb').to('pf').iterate()
    

    解决问题的方法是使用 group()

    gremlin> g.V().has('group', 'name', within('Group A','Group B')).
    ......1>   group().
    ......2>     by('name').
    ......3>     by(out('contains').values('name').fold())
    ==>[Group B:[Person D,Person E,Person F],Group A:[Person A,Person B,Person C]]