2013-04-23 57 views
1

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#。

回答

2

如果你看看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