neo4j - recorrido - ¿Cómo encontrar todas las rutas más largas con consulta de cifrado?
ruta 66 recorrido (1)
Intente subir el criterio de propiedad de la relación a la primera coincidencia de ruta, o calculará la longitud máxima en las rutas que no se filtran con ese criterio. Luego, lleve las rutas y la longitud máxima al segundo tramo de la consulta para que no tenga que volver a unir todas las rutas. Puede recopilar las rutas para llevarlas en la cláusula WITH
, y luego filtrar la longitud de la ruta cuando regrese. Pruebe algo como
START n=node(*)
MATCH p=n-[rels:INCLUDE*]->m
WHERE ALL (rel IN rels
WHERE rel.status=''on'')
WITH COLLECT(p) AS paths, MAX(length(p)) AS maxLength
RETURN FILTER(path IN paths
WHERE length(path)= maxLength) AS longestPaths
Quiero escribir una consulta de cifrado que encuentre todas las rutas más largas entre los nodos que tienen relación con la propiedad STATUS = "on" entre sí, esto es lo que he hecho hasta ahora:
start n=node(*)
match p = n-[r:INCLUDE*..]->m
with n,MAX(length(p)) as l
match p = n-[r:INCLUDE*..]->m
WHERE all(rel in r
where rel.status=''on'' AND (length(p) = l) )
return p,l
Devuelve 3 rutas con 1,2 y 3 longitudes, no solo la ruta más larga, mi consulta debería encontrar solo las rutas más largas, es decir, si hay 8 rutas que se adaptan a mi condición first where ( where rel.status=''on''
), con una longitud de 1, 2, 3, 3, 4, 6, 6, solo deben devolverse las tres rutas con una longitud de 6.
¿Qué debo hacer?
por favor guíame, soy nuevo en neo4j, y probé mucho pero no tengo nada excepto mareos, estaré muy agradecido por tu ayuda.