2013-08-11 4 views
2

저는 Neo4J Spatial 사이퍼 쿼리를 사용하여 반경 25Km의 사용자를 찾고 있으며, 그 중 동일한 고향을 가진 사람들을 찾습니다. 이 쿼리는 내가 의도 한대로 작동하지 않습니다다른 조건으로 Neo4J Spatial Cypher 쿼리 사용하기

START u=node(5),node=node:geom('withinDistance:[17.3,78.3,25.0]') MATCH (u)-[:hometown]->()<-[:hometown]-(o) RETURN o; 

: 나는 다음과 같은 쿼리를 사용했다. 주어진 반경 내의 모든 사용자 노드를 식별하고 각 노드에 대해 노드 ID가 5 인 사용자에게 특정한 동일한 MATCH 쿼리를 실행합니다.

이 문제를 두 부분으로 나눠서, 이것이 내가 결합하고 싶은 부분입니다. 내가 같은 고향이있는 모든 사용자를 식별,

START node=node:geom('withinDistance:[17.3,78.3,25.0]') RETURN node;  

두 번째 부분 :

START u=node(5) MATCH (u)-[:hometown]->()<-[:hometown]-(o) RETURN o; 

을 난에이 두 개의 쿼리를 결합하려면 어떻게 첫 번째 부분, 25 KM 반경에있는 모든 사용자를 식별 단일 쿼리?

답변

2

그래서 올바르게 이해하면 '노드'에 주어진 반경의 모든 고향 마을이 포함되어 있습니까? 어떤 경우에 다음과 같이하면 원하는대로 할 수 있습니까?

START u=node(5),town=node:geom('withinDistance:[17.3,78.3,25.0]') 
MATCH town<-[:hometown]-o 

WITH u, o 
MATCH (u)-[:hometown]->()<-[:hometown]-(o) 
RETURN o 

나는 Peter가 메일 링리스트에 응답 한 것을 봅니다. 그래서 실제로 내 가정은 잘못되었습니다. '노드'는 대답을 의미하는 사용자를 나타냅니다.

START u=node(5),o=node:geom('withinDistance:[17.3,78.3,25.0]') 
MATCH (u)-[:hometown]->()<-[:hometown]-(o) 
RETURN o 
+1

'노드'에는 지정된 반경의 모든 사용자가 포함됩니다. 이 사용자들 사이에서 나는 고향을 공유하는 사람들을 내가 필요로하는 것을 찾아야했습니다. 내가 작동하는이 쿼리를 생각해 냈습니다. 내가 올바르게 쿼리를 구성했다고 생각하면 알려주세요 : START u = node (5), node = node : geom ('withinDistance : [17.3,78.3,25.0]') MATCH (u) - [: hometown] ->() <- [: hometown] - (노드) RETURN 노드; – Ninja

+0

예, 괜찮아 보이네, 미안해. –