es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de cifrado: combinar 2 consultas mediante el enlace de los resultados de una a la otra.

Soy principiante en Cypher y quiero crear una consulta que encuentre todos los nodos que se conectan a los nodos específicos a los que se conecta otro nodo,
ver el ejemplo

Necesito obtener todos los nodos marrones que se conectan a los nodos rojos a los que se conecta el nodo azul.

Para este ejemplo, quiero obtener los Id de los nodos marrones: 2, 3 y 1 (porque ningún nodo rojo necesita obtenerlo).

Hasta ahora lo hice en 2 consultas diferentes y usé Python para encontrarlo, pero ahora necesito hacer esto en 1 consulta.

Match (r:R)-[]-(a:A) return collect(a.Id)

y la segunda consulta:

Match (b:B) Optional Match (b)-[]-(a:A) return b.Id, collect(a.Id)

y en mi script verificar si cada registro de la segunda consulta es un subconjunto de la primera lista de todos los a.Id que se conectan a R.

¿Puedo hacerlo en 1 consulta?
¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes hacerlo en una sola consulta utilizando la cláusula MATCH dos veces para encontrar los nodos que se conectan a nodos específicos a los que otros nodos se conectan. Aquí está la consulta:

    MATCH (b:B)-[]-(a:A)-[]-(r:R)-[]-(red:A)-[]-(blue:B)
    WHERE blue.Id = "blueNode"
    RETURN DISTINCT b.Id
    

    Esta consulta primero encuentra el nodo azul, luego encuentra todos los nodos rojos conectados a él, luego encuentra todos los nodos marrones conectados a esos nodos rojos y finalmente devuelve solo los identificadores de nodos marrones distintos.

Comments are closed.