Neo4j граф базы данных отношения со свойствами

Я разрабатываю что-то для изучения графовых баз данных. Я нахожу кратчайший путь для этого запроса в следующем сегменте:

start n=node(5),m=node(45) match p=shortestPath(n-[*..1000]->m) return p,length(p)

Но у меня есть проблема с этим. Этот запрос вернет кратчайший путь и не рассматривается со свойствами ROUTE. Я хочу получить кратчайший путь с отношением, если существует такое же свойство.

Узел A ==>: ОТНОШЕНИЕ (ROUTE_ID=180) ==> Узел B ==>: ОТНОШЕНИЕ (ROUTE_ID=180) ==> УЗЕЛ C ==>: ОТНОШЕНИЕ (ROUTE_ID=197)

Когда я вызываю обычную функцию кратчайшего пути, она дает мне отношения по случайным свойствам. Я хочу сосредоточиться и на свойствах. Какое ключевое слово для этого? Как я могу решить эту проблему или Как я могу улучшить этот запрос?

Благодарю.

1 ответ

Решение

Если все отношения со свойством ROUTE_ID имеют определенный тип отношений, скажем, "ROUTE", то вы можете сделать это:

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[:ROUTE*..1000]->m)
RETURN p,length(p);

В противном случае вы можете сделать это:

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[r*..1000]->m)
WHERE all(x IN r WHERE has(x.ROUTE_ID))
RETURN p,length(p);

Первый подход должен быть намного быстрее.

Другие вопросы по тегам