Gremlin AWS海王星上的小精灵穿越

Gremlin AWS海王星上的小精灵穿越,gremlin,amazon-neptune,gremlinpython,Gremlin,Amazon Neptune,Gremlinpython,我有一个这样的图形结构- Node1(Console) <----Uses--- Node2(Name, Age) -----plays----> Node3(Game) 以上查询只回答了我所需结果的一半。如何根据播放关系过滤节点2 非常感谢您的帮助。编写查询有多种方法 选项1:从控制台启动 g.V().has('console','ps3')。in('uses')。where(out('plays')。has('game','warcraft'))。valueMap('

我有一个这样的图形结构-

Node1(Console)   <----Uses---  Node2(Name, Age) -----plays----> Node3(Game)
 
以上查询只回答了我所需结果的一半。如何根据播放关系过滤节点2


非常感谢您的帮助。

编写查询有多种方法

选项1:从控制台启动

g.V().has('console','ps3')。in('uses')。where(out('plays')。has('game','warcraft'))。valueMap('name')

让我在这里解释一下结构:

g.V().has('console','ps3')
-->选择具有键为
console
且值为
ps3

在('uses')
-->从以前的顶点集中,通过带有标签
uses
的边跳转到传入顶点。在这个阶段,我们的解决方案中会有玩家顶点

where(out('plays')。has('game','warcraft'))
-->对现有解决方案应用过滤器。由于我们使用的是
,其中
,因此我们不会跳转/遍历到顶点的下一步

valueMap('name')
-->如果现有解决方案是播放器顶点,则投影一个或多个属性

选项2:编写上述查询的另一种方法

g.V().has('console','ps3')。in('uses')。as('myusers')。out('plays')。has('game','warcraft')。select('myusers')。by('name')

as('myusers')
-->在此阶段提供顶点的引用/别名。请注意,在这个阶段,它不会存储所有结果,而只是提供查询中此时顶点类型的引用

out('plays')。has('game','warcraft')
-->与上次使用
where
后我们没有跳转不同,这次我们跳转到
游戏
顶点

select('myusers')。by('name')
-->由于我们希望投影用户,但当前的解决方案是游戏顶点,因此我们需要选择用户顶点,我们使用之前存储的引用进行选择

选项3:从用户开始

g.V().hasLabel('user')。where(out('plays')。has('game','warcraft'))。where(out('uses')。has('console','ps3'))。valueMap('name')

有更多的方法来编写这个查询,比如使用
path()
,但我在这里不详细介绍


既然您已经开始学习Gremlin,我建议您从

开始编写查询有多种方法

选项1:从控制台启动

g.V().has('console','ps3')。in('uses')。where(out('plays')。has('game','warcraft'))。valueMap('name')

让我在这里解释一下结构:

g.V().has('console','ps3')
-->选择具有键为
console
且值为
ps3

在('uses')
-->从以前的顶点集中,通过带有标签
uses
的边跳转到传入顶点。在这个阶段,我们的解决方案中会有玩家顶点

where(out('plays')。has('game','warcraft'))
-->对现有解决方案应用过滤器。由于我们使用的是
,其中
,因此我们不会跳转/遍历到顶点的下一步

valueMap('name')
-->如果现有解决方案是播放器顶点,则投影一个或多个属性

选项2:编写上述查询的另一种方法

g.V().has('console','ps3')。in('uses')。as('myusers')。out('plays')。has('game','warcraft')。select('myusers')。by('name')

as('myusers')
-->在此阶段提供顶点的引用/别名。请注意,在这个阶段,它不会存储所有结果,而只是提供查询中此时顶点类型的引用

out('plays')。has('game','warcraft')
-->与上次使用
where
后我们没有跳转不同,这次我们跳转到
游戏
顶点

select('myusers')。by('name')
-->由于我们希望投影用户,但当前的解决方案是游戏顶点,因此我们需要选择用户顶点,我们使用之前存储的引用进行选择

选项3:从用户开始

g.V().hasLabel('user')。where(out('plays')。has('game','warcraft'))。where(out('uses')。has('console','ps3'))。valueMap('name')

有更多的方法来编写这个查询,比如使用
path()
,但我在这里不详细介绍


既然你已经开始学习小精灵,我建议你从

开始。非常感谢你的详细解释,它真的很有用。非常感谢你的详细解释,它真的很有用。
g.V().hasLabel('user').outE('uses').inV().has('console', 'ps3').count()