У меня есть запрос, который может вернуть потенциально огромное количество строк.Чрезвычайно важно, чтобы это было как можно быстрее.
Мой текущий запрос показывает дублирующие узлы из-за полилиний фильтра. Как мне сделать так, чтобы я мог отображать 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