Tengo una red gráfica como se muestra a continuación
Lo que quiero es obtener "solo" la ruta más larga entre el Nodo 1 y el Nodo 4. He escrito la consulta de la siguiente manera:
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
Sin embargo, la consulta devuelve todas las relaciones entre los nodos (la imagen de arriba es en realidad el resultado de la consulta) que forman parte de la ruta, ¿hay alguna forma de evitar eso?
Nuevo en Neo4j, cualquier ayuda sería apreciada.
Gracias
Respuestas
1 para la respuesta № 1Estas usando el pathLength
De todos los caminos posibles entre n
y n1
. Trate de ordenar y limitar 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
Editar:
Además, han intentado proporcionar un valor estático (3) en la condición where. No parecía cambiar nada.
Probablemente la opción "Conectar nodos de resultados" desu navegador Neo4j está habilitado. Cuando esta opción está habilitada, el navegador Neo4j intentará conectar los nodos resultantes en el modo de visualización de gráficos. Para deshabilitarlo Para lograr el resultado deseado, debe ir a la sección "Visualización de gráficos" de la Configuración del navegador Neo4j y desmarque la opción "Conectar nodos de resultados" como se muestra en la siguiente imagen:
Las relaciones "adicionales" se muestran solo en el modo de visualización de gráficos. Si cambia a Tabla, Texto o Código, estas relaciones no se muestran.