Создание отношений после сопоставления с совокупным и множественным порядком по предложениям - PullRequest
0 голосов
/ 16 октября 2019

Последующий вопрос по Этот вопрос

Теперь мне нужно создать связь между станцией и районом (LOCATED_IN). Первый запрос успешно возвращает только 1 строку на станцию ​​(1 комбинация). Второй запрос, в котором я хочу создать связь, создает слишком много связей.

MATCH (n:Neighborhood),(s:Station)
WITH n, s, distance(n.centerLocation, s.point) AS dist
ORDER BY dist
RETURN s.stationId, COLLECT(n)[0].name AS name, COLLECT(dist)[0] AS shortest
ORDER BY s.stationId

Запрос 2:

MATCH (n:Neighborhood),(s:Station)
WITH n, s, distance(n.centerLocation, s.point) AS dist
ORDER BY dist
CREATE (s)-[r:LOCATED_IN]->(nbh)
RETURN s.stationId, COLLECT(n)[0] AS nbh, COLLECT(dist)[0] AS shortest
ORDER BY s.stationId

Запрос 3:

MATCH (n:Neighborhood),(s:Station)
WITH n, s, distance(n.centerLocation, s.point) AS dist
ORDER BY dist
CREATE (s)-[r:LOCATED_IN]->(n)
RETURN s.stationId, COLLECT(n)[0] AS nbh, COLLECT(dist)[0] AS shortest
ORDER BY s.stationId

После запроса 2: Станции (синие узлы) подключены к нескольким узлам, которые не представляют соседние узлы. У них есть только удостоверение личности. Query 2

После запроса 3: Станции (синие узлы) подключены к множеству узлов окрестностей. Это должен быть только один район на станцию. Query 3

Как мне написать свой запрос, чтобы иметь 1 район на станцию?

1 Ответ

1 голос
/ 16 октября 2019

Запрос 2 имеет недостатки, поскольку CREATE использует несвязанную переменную nbh.

Для Query 3 вам необходимо создать связь от каждой станции только до одного ближайшего района. Например:

MATCH (n:Neighborhood), (s:Station)
WITH n, s, distance(n.centerLocation, s.point) AS dist
ORDER BY dist
WITH s, COLLECT(dist)[0] AS shortest, COLLECT(n)[0] AS nbh
CREATE (s)-[:LOCATED_IN]->(nbh)
RETURN s.stationId, nbh, shortest
ORDER BY s.stationId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...