Base de datos utilizada
Se define primeramente la base de datos a utilizar en el ejemplo.
CREATE (Paco:Person {name:'Paco', born:1964}), (Juan:Person {name:'Juan', born:1967}), (Andres:Person {name:'Andres', born:1961}), (Hugo:Person {name:'Hugo', born:1960}), (Natalia:Person {name:'Natalia', born:1967}), (Miriam:Person {name:'Miriam', born:1965}), (Rosa:Person {name:'Rosa', born:1952}) CREATE (Telefonica:Company {name:'Telefonica', central_office:'Madrid', sector:'telecomunicaciones'}), (Repsol:Company {name:'Repsol', central_office:'Madrid', sector:'energia'}), (Mercadona:Company {name:'Mercadona', central_office:'Valencia', sector:'alimentacion'}) CREATE (Paco)-[:FRIEND_OF {role:['Amigo de Trabajo']}]->(Juan), (Paco)-[:FRIEND_OF {role:['Amigo de Trabajo']}]->(Andres), (Juan)-[:FRIEND_OF {role:['Amigo de la infancia']}]->(Hugo), (Andres)-[:FRIEND_OF {role:['Amigo de la infancia']}]->(Natalia), (Miriam)-[:FRIEND_OF {role:['Amigo de Trabajo']}]->(Rosa), (Natalia)-[:FRIEND_OF {role:['Amigo de gimnasio']}]->(Juan), (Rosa)-[:FRIEND_OF {role:['Amigo de Trabajo']}]->(Hugo) CREATE (Paco)-[:WORK_AT {position:['Director de Marketing']}]->(Telefonica), (Andres)-[:WORK_AT {position:['Director de Marketing']}]->(Telefonica), (Miriam)-[:WORK_AT {position:['Director de Marketing']}]->(Repsol), (Rosa)-[:WORK_AT {position:['Director de Marketing']}]->(Repsol), (Hugo)-[:WORK_AT {position:['Director de Marketing']}]->(Mercadona), (Juan)-[:WORK_AT {position:['Director de Marketing']}]->(Mercadona), (Natalia)-[:WORK_AT {position:['Director de Marketing']}]->(Mercadona)
Ejemplo 1: Contar elementos derivados de dos relaciones
Contar para cada persona el número de amigos que tiene trabajando en los diferentes sectores
MATCH (p1:Person)-[:FRIEND_OF]->(p2:Person)-[:WORK_AT]->(c:Company) RETURN p1.name AS Persona , COUNT(c.sector) AS Sectores
Ejemplo 2: Generar relaciones a partir de consultas
Crear la relación de compañeros de trabajo «coworkers» para las personas que trabajen en la misma compañía.
MATCH (p1:Person)-[r1:WORK_AT]->(c:Company), (p2:Person)-[r2:WORK_AT]->(c:Company) CREATE (p1)-[r3:COWORKERS]->(p2) RETURN p1,p2,c,r1,r2,r3
Ejemplo 3: Agrupaciones
Para cada persona agrupar por sectores en que trabajan sus amigos
MATCH (p1:Person)-[:FRIEND_OF]->(p2:Person)-[:WORK_AT]->(c:Company) RETURN p1.name, COLLECT(c.sector)
0 comentarios