【问题标题】:How to output current vertex with its neighbors in gremlin?如何在 gremlin 中输出当前顶点及其邻居?
【发布时间】:2014-09-20 04:33:02
【问题描述】:

我正在尝试在图表上进行复杂的查询,并且成功地做到了。在该查询中输出的顶点也有一些别名顶点通过别名关系连接到这些顶点。

现在我希望输出所有先前的顶点及其别名顶点,但我可以做一个/或(原始顶点或每个顶点的别名顶点)。

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

有什么建议吗?

【问题讨论】:

    标签: graph gremlin titan nosql


    【解决方案1】:

    让我们考虑以下示例:

    [AliasUser1] [ItemA] [别名用户2]

    使用以下代码:

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

    【讨论】:

    • 正是我想要的!非常感谢
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多