Я использую запросы 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;
Как объединить эти два запроса в один запрос?
«узел» содержит всех пользователей в заданном радиусе. Среди этих пользователей мне нужно было найти тех, кто разделяет родной город, как я. Я придумал этот запрос, который работает, сообщите мне, если вы считаете, что правильно структурировал запрос: START u = node (5), node = node: geom ('WithinDistance: [17.3,78.3,25.0]') MATCH (u) - [: hometown] ->() <- [: hometown] - (узел) RETURN node; – Ninja
Да, это выглядит хорошо, жаль, что я неправильно понял! –