2016-07-12 49 views
0

我需要從neo4j讀取前端可視化的一些數據。我需要一次讀取10個節點,以及它們之間的所有關係。我嘗試了一些查詢,但都沒有成功。Neo4j,如何分頁節點與所有關係

match (p:Page{domain:"www.google.com"})-[r:LinkTo]-(:Page) 
with p,r skip 10 limit 10 
return collect(distinct p) as pages, collect(distinct r) as links; 

這一個會給我10個節點和10個關係,但是這些節點之間的關係數目超過10個。 任何幫助,將不勝感激。

回答

1
// 1) Collect pages: 
match (P1:Page{domain:"www.google.com"})-[:LinkTo]-(P2:Page) 
with P1, P2 limit 10 
with collect(distinct P1) + collect(distinct P2) as tmp 
unwind tmp as p 
with collect(distinct p) as pages 

// 2) Then get a Cartesian product:  
unwind pages as P1 
    unwind pages as P2 
    optional match (P1)-[r:LinkTo]-(P2) 
RETURN pages, collect(distinct r) as links 

如果你需要精確最大10個節點:

// 1) Collect pages: 
MATCH (P1:Page{domain:"www.google.com"})-[:LinkTo]-(P2:Page) 
WITH P1, P2 LIMIT 10 
WITH collect(distinct P1) + collect(distinct P2) as CP 
UNWIND CP as P 
WITH distinct P LIMIT 10 
WITH collect(P) as pages 

// 2) Then get a Cartesian product:  
unwind pages as P1 
    unwind pages as P2 
    optional match (P1)-[r:LinkTo]-(P2) 
RETURN pages, collect(distinct r) as links 
+0

謝謝!這真的很有幫助!它給了我所有的關係。但它仍然可以得到改進,查詢並不真正給出我在收集不同節點後確切的10個節點。 – ShaneX

+0

@ShaneX添加了一個如何精確獲取10個節點的示例。 –

+0

再次感謝~~:D @stdob – ShaneX

相關問題