2017-09-28 3 views
1

私は与えられたソースで大きなグラフのデータベースからサブグラフを照会したいと思います。与えられたノードの上位25個の近隣ノードと、このノードセット間のすべての関係と、どのようにしてクエリを実行する必要があるとしますか?py2neo query subgraph from Neo4j

MATCH (source {label:'source'}) -[:relation]-> (neighbors) 
RETURN source,neighbors 
LIMIT 25 

これは26個のノードだけでなく、それらのノード間のすべての既存の関係を返す、のNeo4jブラウザで動作します。私が持っている瞬間

。しかし、私はしようとpy2neoを介して、同じクエリを実行します。それだけで意味がソース25人の隣人との間の直接25のエッジ接続と一緒に26個のノードを返す

py2neo.cypher.execute(query) 

を。しかし、私はなぜブラウザの結果とpy2neoの結果との間に違いがあるのだろうと思います。そして、どのように私はすべてのエッジ接続が返されて同じ結果を得ることができます。一般的に

、私は次のように小さいの質問知っていただきたいと思います:のNeo4j内のノードのリストに、単一ノードを追加する方法

  • を?例えばnlist = neighbors + node

  • ノードの2つのセット間のすべての関係を返す方法はありますか?例えばリターン(NLIST中) - [:関係] - >(NLISTのa、b)

編集:視覚化する

、私は結果のグラフは、この

subgraph

ような何かになりたいです

ではなく、この

star

のようなスターグラフ0

コメントありがとうございます。

+0

グラフの視覚化モードを使用してNeo4jブラウザで結果を視覚化していますか? trueの場合は、より正確な表現のためにテキストモードに変更してみてください。 –

+0

また、neo4jブラウザで表示される結果とpy2neoを介した結果の違いについてもう少し説明できますか? –

+0

実際、私はグラフモードで表示していました。テキストモードに変更すると、py2neoから取得したのと同じ結果が得られるように見えます。私は、その違いが何を意味するのかを説明するためにいくつかの編集を追加しました。 –

答えて

1

Neo4jブラウザとpy2neo結果の違いについて:おそらく、グラフ結果を「結果ノードを接続」オプションで有効にしている可能性があります。それを無効にする(画像の下に)か、視覚化モードを "Text"に変更してみてください。サイファークエリについて

Graph visualization options

、あなたはsourceneighborsをマージするcollect()を使用することができます。

MATCH (source {label:'source'})-[:relation]->(neighbors) 
WITH collect(source) + collect(neighbors) as all 
UNWIND all AS nodes 
RETURN nodes 

セットから、この場合には、ノードの二組(間のすべてのエッジを戻すためにNeo4j, get all relationships between a set of nodes

このサブグラフは、Cypherクエリ

で返されます。
MATCH (source {label:'source'})-[:relation]->(neighbors) 
WITH collect(distinct source) + collect(neighbors) as all 
UNWIND all AS nodes 
MATCH (nodes)-[:relation]->(nei) 
WHERE nei in nodes 
RETURN nodes,nei 
関連する問題