2013-08-11 2 views
2

Я использую запросы Neo4J Spatial cypher, чтобы найти пользователей в радиусе 25 км, и среди них найти тех, у кого есть тот же родной город, что и я. Я использовал следующий запрос:Использование запросов Neo4J Spatial Cypher с другими условиями

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

Этот запрос не работает должным образом. Он идентифицирует все пользовательские узлы в заданном радиусе и выполняет тот же запрос MATCH, который специфичен для пользователя с идентификатором узла 5 для каждого из этих узлов.

Разделение этой проблемы на две части, это то, что я хотел бы объединить. Первая часть, идентифицировать всех пользователей в радиусе 25 км:

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

Вторая часть, идентифицировать всех пользователей, которые имеют такой же родной город, как и я:

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

Как объединить эти два запроса в один запрос?

ответ

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 

Я вижу, что Питер ответил на список рассылки. Так что на самом деле мое предположение было неправильным, «узел» представляет пользователей, что означает, что это ответ:

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 node; – Ninja

+0

Да, это выглядит хорошо, жаль, что я неправильно понял! –