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