7 dic 2022 🎄

Pasos

  • Decargar https://neo4j.com/download-center/#community
  • Instalar Java JDK 17 o mayor
  • AuraDB servidor en la nube (sólo 1), hay que crear una cuenta
  • localhost:7474 environment
  • Neo4j Sandbox (gratis 3 días) https://neo4j.com/sandbox/ (registrarse con email alternativo para evitar correo basura)
  • Nuevo proyecto >>> Movies databse (coger esta base de datos)
  • MATCH (n) DETACH DELETE n , (elimina todo)
  • Intentar no usar nombres para las relaciones (sólo usar verbos). Ej: Ann es dueña de un coche (no usarlo) usar Ann posee un coche
  • Todo lo que va entre paréntesis es un nodo en las queries

Ejemplo de gql:

 
CREATE (TheMatrix:Movie {title:'The Matrix',
released:1999, tagline:'Welcome to the Real World'}) --creacion de un nodo
 
CREATE (Keanu:Person {name:'Keanu Reeves', born:1974}) --creacion de un nodo
 
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix) --relacion

13 Dic 2022 🌯

  • El lenguaje consiste en especificar la estructura que quieres encontrar, y el lenguaje te devuelve todas las combinaciones que encajan con esa estructura
  • El resultado es una tabla con los datos del return
  • Sale 1 fila por cada MATCH
  • El WITH nos permite partir una consulta en trozos

Ejemplos de consultas:

MATCH (n) DETACH DELETE n --borra todo
 
--Los actores ordenados por edad
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 RETURN DISTINCT p, p.name ORDER BY p.born DESC
--Los actores ordenados por edad sin fecha de nacimiento nula
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL RETURN DISTINCT p, p.name ORDER BY p.born DESC
--El actor más joven
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL RETURN DISTINCT p, p.name ORDER BY p.born DESC LIMIT 1
--Los actores con sus películas(con actores repetidos)
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL RETURN p.name, m.title ORDER BY p.name
--Los actores con sus películas(sin actores repetidos)
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL RETURN p.name, COLLECT(m.title) AS peliculas
--Los actores con su número total de películas
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL RETURN p.name, COUNT(m.title) AS total
--Los actores con su número total de películas ordenados por el total
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL RETURN p.name, COUNT(m.title) AS total ORDER BY total DESC
--Consulta múltiple usando WITH
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.released > 1990 AND p.born IS NOT NULL WITH p.name AS nombre, COUNT(m.title) AS total WHERE total >= 4 RETURN nombre, total
 
(a)-[:A|D|W*]-(KB) -- como llegar a un nodo en concreto sin saber los intermedios pero que sean de tipos determinados