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

问题描述:

Neo4j将支持2.x版本的树模式(我们不能使用树函数)我们使用1.9RC1。如何通过Gremlin在Neo4j 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#。

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

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

然后树表示将是:

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

智能采用嵌入式包含HashMap的将提供你想要的功能。请查看Pipes 2.x代码库,查看树是如何实现的,并复制(并调整)您的需求。

+0

g.v(4582).inE.outV.paths {it}返回您编写的矩阵。但是有数据重复问题。我将检查HashMaps。谢谢。 – ozz 2013-04-24 17:49:33

+0

Neo4J似乎没有切实可行的办法...但泰坦一切似乎都很好。 @marko泰坦0.3.1的发布日期是什么? (我认为.1意味着生产就绪) – ozz 2013-05-07 11:05:09