/ / Pobierz określoną ścieżkę jako wyjście za pomocą cypher (Neo4j) - neo4j, cypher

Uzyskaj specyficzną ścieżkę jako wyjście za pomocą cypher (Neo4j) - neo4j, cypher

Mam sieć wykresów, jak pokazano poniżej

wprowadź opis obrazu tutaj

To, czego chcę, to uzyskać "tylko" najdłuższą ścieżkę między węzłem 1 a węzłem 4. Napisałem zapytanie w następujący sposób:

MATCH p = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WITH max(length(p)) AS pathLength
MATCH p1 = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WHERE length(p1) = pathLength
RETURN p1

Jednak kwerenda zwraca wszystkie relacje między węzłami (powyższy obraz jest faktycznie wynikiem kwerendy), które są częścią ścieżki, czy istnieje sposób, aby tego uniknąć?

Nowy w Neo4j, każda pomoc będzie doceniona.

Dzięki

Odpowiedzi:

1 dla odpowiedzi № 1

Korzystasz z pathLength wszystkich możliwych ścieżek pomiędzy n i n1. Spróbuj zamówić i ograniczyć pathLength:

MATCH p = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WITH length(p) AS pathLength
ORDER BY pathLength DESC // greater path lengths first
LIMIT 1 // get only the greatest
MATCH p1 = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WHERE length(p1) = pathLength
RETURN p1

Edytować:

Próbowano również dostarczać wartość statyczną (3) w warunku where. Nie wydawało się niczego zmieniać.

Prawdopodobnie opcja "Połącz węzły wyników" zTwoja przeglądarka Neo4j jest włączona. Po włączeniu tej opcji przeglądarka Neo4j podejmie próbę połączenia uzyskanych węzłów w trybie wizualizacji graficznej. Aby go wyłączyć Aby uzyskać pożądany wynik, przejdź do sekcji "Wizualizacja graficzna" w Ustawieniach przeglądarki Neo4j i odznacz opcję "Połącz węzły wyników" tak, jak pokazano na poniższym obrazku:

Ustawienia wizualizacji wykresów

Relacje "dodatkowe" pokazywane są tylko w trybie wizualizacji wykresu. Jeśli zmienisz tabelę, tekst lub kod, te relacje nie są wyświetlane.