Вернуть уникальные узлы в запросе Cypher - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть запрос, который может вернуть потенциально огромное количество строк.Чрезвычайно важно, чтобы это было как можно быстрее.

Мой текущий запрос показывает дублирующие узлы из-за полилиний фильтра. Как мне сделать так, чтобы я мог отображать n.NAME, который будет отличаться?

PS: PS: если я удаляю: -> extract(n in segments | n.ORIGIN_POLYLINE) as polylines, так что у меня хороший результат, но я хотел бы оставить полилинии с уникальными узлами (см. Рисунки: 1 и 2)

Вот мой запрос:

MATCH (p:Polyline_ROMANIA)-[:CONTAINS_ROMANIA]->(n:Point_ROMANIA) 
WHERE p.ID_POLYLINE='9141'
WITH head(COLLECT(n)) as start
MATCH c=(start)<-[:SEGMENT_ROMANIA*0..]-(pt1:Point_ROMANIA)<-[:CONNECTED_ROMANIA]-(e:Establishment_ROMANIA) 
WITH 2 * 6371 * asin(sqrt(haversin(radians(toFloat(e.Y) - toFloat(start.Y))) + cos(radians(toFloat(e.Y)))* cos(radians(toFloat(start.Y)))* haversin(radians(toFloat(e.X) - toFloat(start.X))))) AS distance, e, c 
WHERE  distance <= 5000
WITH Distinct e, filter(n in rels(c) where n.ORIGIN_POLYLINE IS NOT NULL) AS segments, distance 
RETURN e as nodes, extract(n in segments | n.ORIGIN_POLYLINE) as polylines, distance

изображение 1

изображение 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...