如何通过Gremlin在Neo4j 1.9RC1中获得具有关系和相关顶点的顶点

时间:2013-04-23 19:27:52

标签: neo4j graph-databases gremlin neo4jclient

Neo4j将支持2.x版本的树模式。(我们不能使用树函数)我们使用的是1.9RC1。

我需要让关注者和朋友的用户。

public class User
{
    public long Id { get; set; }
    public string Name { get; set; }
    ...............
}

public class UserModel
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string DetailedInformation { get; set; }
    public IEnumerable<UserModel2> Followers { get; set; }
    public IEnumerable<UserModel2> Friends{ get; set; }
}

public class UserModel2
{
    public long Id { get; set; }
    public string Name { get; set; }
}

我想获得树形结构的UserModel响应。 如何通过Gremlin来完成..

我们正在使用路径功能。

g.v(4582).inE.outV.paths{it}

但是它存在数据重复问题。 它返回的路径不是树。

PS:我们正在使用C#。

1 个答案:

答案 0 :(得分:2)

如果你看一下tree()的实现方式,它只是在连接点聚合的path()。连接点是相同深度的顶点。因此,您可以从path()的结果(旧版本的Gremlin中的 - 或paths())创建自己的树数据结构。让我解释一下如何通过示例实现它。如果您有一组这样的路径:

[1,2,3,4]
[1,3,5,6]
[1,2,3,5]

然后树表示将是:

      4
     /
  2-3
 /   \
1     5
 \
  3-5-6

智能使用嵌入式HashMaps将提供您所需的功能。请查看Pipes 2.x代码库,了解Tree的实现方式,并根据需要进行复制(和调整)。