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()