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.

Neo4j: Tomar la intersección de dos MATCHs

Tengo las siguientes dos consultas:

MATCH (s1: ubicación)-[:SHIPS_TO]->(: midLocation)-[: LEAVES]->(d1: ubicación)
RETURN s1.name, count(d1)


MATCH (s2: ubicación)-[:SHIPS_TO]->(: midLocation)-[: LEAVES]->(d2: ubicación)
WHERE s2.manager = d2.manager
RETURN s2.name, count(d2)

Y lo que quiero hacer es devolver la intersección de estas dos consultas. Lo que realmente intento hacer es encontrar todas las ubicaciones que SOLAMENTE hacen envíos a ubicaciones con el mismo gerente (donde las ubicaciones de envío están separadas por un único nodo ‘midLocation’), y encontrar la intersección de las dos listas lograría esto, pero no puedo encontrar una manera de implementarlo. ¿Tal vez esta es otra forma de hacerlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para encontrar la intersección de las dos consultas, puede usar la función INTERSECTION en el lenguaje de consulta Cypher de Neo4j. Aquí hay un ejemplo de consulta para lograr esto:

    MATCH (s1:location)-[:SHIPS_TO]->(:midLocation)-[:LEAVES]->(d1:location)
    WHERE NOT EXISTS (
      MATCH (s2:location)-[:SHIPS_TO]->(:midLocation)-[:LEAVES]->(d2:location)
      WHERE s2 <> s1 AND d2 <> d1 AND s2.manager <> d2.manager
      AND s2 = s1 AND d2 <> d1
    )
    RETURN s1.name, count(d1)
    INTERSECTION
    MATCH (s2:location)-[:SHIPS_TO]->(:midLocation)-[:LEAVES]->(d2:location)
    WHERE s2.manager = d2.manager
    RETURN s2.name, count(d2)
    

    En esta consulta, usamos la cláusula NOT EXISTS para asegurarnos de que s1 y d1 solo envíen a ubicaciones con el mismo gerente. Luego, usamos la función INTERSECTION para encontrar las ubicaciones comunes devueltas por ambas consultas.

    Tenga en cuenta que también incluimos algunas condiciones adicionales en la cláusula NOT EXISTS para asegurarnos de que solo coincidamos en un nodo de midLocation entre las ubicaciones de envío.

Comments are closed.