Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/npm/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gremlin 小精灵:如何返回顶点及其关联顶点?_Gremlin_Titan_Janusgraph - Fatal编程技术网

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

Gremlin 小精灵:如何返回顶点及其关联顶点?,gremlin,titan,janusgraph,Gremlin,Titan,Janusgraph,我需要返回该组中的一些组和人员,如下所示: 我怎么能用小精灵做到这一点。它们通过一条边连接到组。在Gremlin问题中包含一个示例图总是很有帮助的,最好是作为一个易于粘贴到Gremlin控制台的东西,如下所示: g.addV('group').property('name','Group A').as('ga'). addV('group').property('name','Group B').as('gb'). addV('person').property('name','Pers

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


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

在Gremlin问题中包含一个示例图总是很有帮助的,最好是作为一个易于粘贴到Gremlin控制台的东西,如下所示:

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]]

在你的问题中加入一个示例图总是很有帮助的,最好是作为一个容易粘贴到Gremlin控制台的东西,如下所示:

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]]

您的模式是什么?组是顶点,人是顶点,与边相连。您的模式是什么?组是顶点,人是顶点,与边相连。在这种情况下,stephen可以返回所有组,而不需要“内('Group A','Group B')和所有组和用户的值映射?但同样,当用户嵌套在组中时。是否可以检索该顶点“组”及其值映射,并将该组的所有边顶点嵌套到它们,以及这些顶点的所有值映射?为什么不试试看?:)如果图形足够小,则可以使用
in()
has()
替换为一个简单的
hasLabel(“组”)
。当然,对于一个小的或大的图形,您可以用
valueMap()
替换
values('name')
。请注意,如果在3.2.x中使用类似于gremlin python的GLV,它将无法正确序列化这样的结果,因为返回的
Map
中的键不是字符串。您需要使用3.3.x,其中包括GraphSON 3.0并支持非字符串键。在本例中,stephen可以返回所有组,而不需要“in('groupA','groupB')和所有组和用户的valueMap?但同样,当用户嵌套在组中时。是否可以检索该顶点“组”及其值映射,并将该组的所有边顶点嵌套到它们,以及这些顶点的所有值映射?为什么不试试看?:)如果图形足够小,则可以使用
in()
has()
替换为一个简单的
hasLabel(“组”)
。当然,对于一个小的或大的图形,您可以用
valueMap()
替换
values('name')
。请注意,如果在3.2.x中使用类似于gremlin python的GLV,它将无法正确序列化这样的结果,因为返回的
Map
中的键不是字符串。您需要使用3.3.x,它包括Graphson3.0并支持非字符串键。