如何在Gremlin中输出当前顶点及其相邻顶点?

3

我正在尝试在图形上进行复杂查询,并已成功完成。该查询输出的顶点还与这些顶点通过别名关系连接的一些别名顶点有关。

现在,我想输出所有以前的顶点及其别名顶点,但我只能做到其中之一(要么原始顶点,要么每个顶点的别名顶点)。

如果有人知道一种方法可以输出特定顶点的相邻顶点,并在同一查询中输出该顶点,我认为我的问题将得到解决。

有什么建议吗?

1个回答

3

让我们考虑以下示例:

[AliasUser1] <---'alias'--- [User1] ---'likes'---> [ItemA] <---'likes'--- [User2] ---'alias'---> [AliasUser2]

使用以下代码:

result = [] as Set;
user1.out('likes')  // we are at ItemA
     .in('likes')   // we are at User2 but also back at User1
     .store(result) // store the users vertices
     .out('alias')  // we are at the alias vertices 
     .store(result) // store the alias vertices
     .iterate()     // run

你将获得:

gremlin> result.name
==>User2
==>AliasOfUser2
==>User1
==>AliasOfUser1

我猜“store”关键字是解决你问题的关键。
下面是样例图:
g = new TinkerGraph()

user1 = g.addVertex()
user1.name ='User1'
user2 = g.addVertex()
user2.name ='User2'
itemA = g.addVertex()
itemA.name ='ItemA'
myAlias1 = g.addVertex()
myAlias1.name ='AliasOfUser1'
myAlias2 = g.addVertex()
myAlias2.name ='AliasOfUser2'

g.addEdge(user1, itemA, 'likes')
g.addEdge(user2, itemA, 'likes')
g.addEdge(user1, myAlias1, 'alias')
g.addEdge(user2, myAlias2, 'alias')

正是我想要的!非常感谢。 - Tanmay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接