2017-09-28 12 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 = 이웃 노드 + 노드

  • 두 노드 집합 간의 모든 관계를 반환하는 방법은 무엇입니까? 예 : 창 (a에서 NLIST) - [: 관계] -> (NLIST의 b)

편집 :

가 시각화는 I는 결과 그래프는 본

subgraph

같을 할

보다는이

star

같은 스타 그래프 0

의견을 보내 주셔서 감사합니다.

+0

그래프 시각화 모드를 사용하여 Neo4j Browser에서 결과를 시각화하고 있습니까? true 인 경우보다 정확하게 표현하려면 텍스트 모드로 변경해보십시오. –

+0

또한, neo4j 브라우저에 표시된 결과와 py2neo를 통한 결과의 차이점에 대해 좀 더 설명 할 수 있습니까? –

+0

실제로 그래프 모드에서 보았습니다.그리고 텍스트 모드로 바꿀 때 py2neo에서 얻은 것과 같은 결과를 얻은 것처럼 보입니다. 차이점에 대한 의미를 설명하기 위해 몇 가지 추가 편집을 추가했습니다. –

답변

1

Neo4j Browser와 py2neo 결과의 차이점 : "결과 노드 연결"옵션을 사용하여 그래프 시각화 모드를 사용하고있는 것 같습니다. 이미지를 비활성화 (아래 이미지)하거나 시각화 모드를 "텍스트"로 변경하십시오 (예 :). 세트 (이 경우 노드의 두 세트 사이의 모든 가장자리를 반환하기 위해

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

: 당신이 sourceneighbors을 병합 collect()를 사용할 수있는 사이퍼 쿼리에 대해

Graph visualization options

, 이 게시글을 참조하십시오. Neo4j, get all relationships between a set of nodes

다음 하위 그래프는 Cypher 쿼리

과 함께 반환됩니다.3210
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