2016-07-12 11 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

関連する問題