Skip to content

Instantly share code, notes, and snippets.

@Awes0meM4n
Created April 17, 2020 08:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Awes0meM4n/bc46cc457a85e2ff6f46688c9b325a17 to your computer and use it in GitHub Desktop.
Save Awes0meM4n/bc46cc457a85e2ff6f46688c9b325a17 to your computer and use it in GitHub Desktop.
//Ejercicio 1: Introducción a Neo4J
//Cree los siguientes nodos y relaciones
// Nodos de tipo Amigo con propiedades
CREATE (Juan:Amigo {nombre: 'Juan Martín', edad: 45}),
(Maria:Amigo {nombre: 'María Alonso', edad: 27, ciudad: 'Madrid'}),
(Jose:Amigo {nombre: 'José Gómez', edad: 25}),
(Eva:Amigo {nombre: 'Eva Pérez', edad: 33, ciudad:'Barcelona'}),
(Elisa:Amigo {nombre: 'Elisa Alonso', edad: 34, ciudad:'Barcelona'}),
(Sergio:Amigo {nombre: 'Sergio Álvarez', edad: 26}),
(Elvira:Amigo {nombre: 'Elvira Jimenez', edad: 20}),
(Juan)-[:ES_AMIGO {desde:'31/12/2015'}]->(Maria),
(Juan)-[:ES_AMIGO]->(Eva),
(Juan)-[:ES_AMIGO]->(Jose),
(Jose)-[:ES_AMIGO]->(Sergio),
(Eva)-[:ES_AMIGO]->(Maria),
(Maria)-[:ES_AMIGO]->(Eva),
(Maria)-[:ES_AMIGO]->(Elisa),
(Sergio)-[:ES_AMIGO]->(Elvira)
//Nodos de tipo Persona con tres propiedades (format JSON)
CREATE (:Persona {nombre: 'Andrés Álvarez', edad:21, ciudad:'Avila'})
CREATE (:Persona {nombre: 'Marta Romero', ciudad:'Madrid'})
1) Inserte una nueva Persona que se llame Carmen Martínez, de 52 años.
CREATE (:Persona {nombre: 'Carmen Martínez', edad:51})
2) Recoja mediante una relación que Andrés Álvarez es el hermano de Marta Romero.
MATCH (a),(b)
WHERE a.nombre= 'Andrés Álvarez' AND b.nombre = 'Marta Romero'
CREATE (a)-[r:ES_HERMANO]->(b)
RETURN r
3) Recoja que Carmen Martínez es la madre de Andrés Álvarez y de Marta Romero.
MATCH (a),(b),(c)
WHERE a.nombre= 'Andrés Álvarez' AND b.nombre = 'Marta Romero' AND c.nombre = 'Carmen Martínez'
CREATE (c)-[:ES_MADRE]->(a), (c)-[:ES_MADRE]->(b)
RETURN a,b,c
4) Añada la etiqueta de Amigo a Marta Romero.
MATCH (a{nombre: 'Marta Romero'})
SET a :Amigo
RETURN a
5) Recoja que Eva Pérez es amiga de Marta Romero.
MATCH (a),(b)
WHERE a.nombre= 'Eva Pérez' AND b.nombre = 'Marta Romero'
CREATE (a)-[r:ES_AMIGO]->(b)
RETURN a,b
6) Incluya la propiedad de la Provincia en los Amigos de Madrid.
MATCH (a:Amigo)
WHERE a.ciudad = 'Madrid'
SET a.provincia='Madrid'
RETURN a
7) Recupere los Amigos que vivan en Madrid o Barcelona.
MATCH (a:Amigo)
WHERE a.ciudad = 'Madrid' OR a.ciudad= 'Barcelona'
RETURN a
8) Borre las personas de menos de 18 años.
MATCH (a:Persona)
WHERE a.edad<18
DETACH DELETE a
//No se borra ninguno.
9) Añada a las personas una restricción de existencia y unicidad de la propiedad DNI. Si no es posible, modifique los nodos para permitir la creación de estas restricciones.
CREATE CONSTRAINT ON (a:Persona) ASSERT a.DNI IS UNIQUE
CREATE CONSTRAINT ON (a:Persona) ASSERT a.nombre IS UNIQUE
CREATE CONSTRAINT ON (a:Persona) ASSERT exists (a.nombre)
// No funciona en la versión Community Edition
call db.constraints()
DROP CONSTRAINT ON (a:Persona) ASSERT a.DNI IS UNIQUE
DROP CONSTRAINT ON (a:Persona) ASSERT a.nombre IS UNIQUE
10) Recupere todos los amigos y los amigos de los amigos de Eva Pérez.
MATCH (a)-[:ES_AMIGO]->(b)-[:ES_AMIGO]->(c)
WHERE a.nombre= 'Eva Pérez'
AND a<>c
return b.nombre AS Amigo_Eva, c.nombre AS Amigo_de_Amigo_Eva
11) Recupere el nombre y la edad de los amigos de Juan Martín.
MATCH (a{nombre: 'Juan Martín'})-[:ES_AMIGO]->(b)
return b.nombre AS nombreAmigo, b.edad AS edadAmigo
12) Cree un índice para el nombre de los amigos.
CREATE INDEX ON :Amigo(nombre)
call db.indexes()
13) Exporte el grafo completo creado, tanto en formato csv como png.
// primero ejecutáis la consulta que devuelve todos los nodos y las relaciones
match (n) return n
//Después, desde el cliente de Neo4J (navegador), tenéis diferentes vistas.
//Si os vais a la vista gráfica, tenéis la opción de descargar el grafo como .png
//Si os vais a la vista de tabla, texto o código, tenéis la opción de descargar el grafo como .csv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment