Mam sieć wykresów, jak pokazano poniżej
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 № 1Korzystasz 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:
Relacje "dodatkowe" pokazywane są tylko w trybie wizualizacji wykresu. Jeśli zmienisz tabelę, tekst lub kod, te relacje nie są wyświetlane.