Skip to content

Instantly share code, notes, and snippets.

@alculquicondor
Last active September 19, 2016 18:50
Show Gist options
  • Save alculquicondor/96ee63475ac25b26c7259cca842d7547 to your computer and use it in GitHub Desktop.
Save alculquicondor/96ee63475ac25b26c7259cca842d7547 to your computer and use it in GitHub Desktop.
CREATE (Aldo:Person {name: "Aldo"}),
(Eileen:Person {name: "Eileen"}),
(Javier:Person {name: "Javier"}),
(Adolfo:Person {name: "Adolfo"}),
(Jose:Person {name: "Jose"}),
(Aldo)-[:follows]->(Adolfo),
(Eileen)-[:follows]->(Jose)-[:follows]->(Javier),
(Eileen)-[:follows]->(Javier),
(Adolfo)-[:follows]->(Jose)-[:follows]->(Adolfo),
(Aldo)-[:follows]->(Javier)-[:follows]->(Adolfo),
(Jose)-[:follows]->(Aldo)<-[:follows]-(Eileen),
(Girl:Book {isbn: "aaa", title: "The Girl with the Dragon Tattoo"}),
(Lean:Book {isbn: "bbb", title: "Running Lean"}),
(Disciplined:Book {isbn: "ccc", title: "Disciplined Entrepreneurship"}),
(Nosql:Book {isbn: "ddd", title: "NoSQL for dummies"}),
(Hija:Book {isbn: "eee", title: "Hija de la Fortuna"}),
(Metamorfosis:Book {isbn: "fff", title: "La Metamorfosis"}),
(Time:Book {isbn: "ggg", title: "Brief history of time"}),
(Aldo)-[:likes]->(Girl),
(Aldo)-[:likes]->(Disciplined)<-[:likes]-(Javier)-[:likes]->(Lean),
(Aldo)-[:likes]->(Metamorfosis)<-[:likes]-(Jose),
(Disciplined)<-[:likes]-(Adolfo)-[:likes]->(Time)<-[:likes]-(Aldo),
(Eileen)-[:likes]->(Hija),
(Eileen)-[:likes]->(Metamorfosis);
// Todas las personas
MATCH (p:Person) RETURN p.name;
// Las personas que sigue Aldo
START a=node:node_auto_index(name="Aldo")
MATCH (a)-[:follows]->(b)
RETURN b.name;
// Las personas que sigue Aldo y las que siguen ellos
START a=node:node_auto_index(name="Aldo")
MATCH (a)-[:follows*1..2]->(b)
RETURN DISTINCT b;
// Los libros que le gustan a Aldo que también le gustan a los que él sigue
START a=node:node_auto_index(name="Aldo")
MATCH (a)-[:follows]->(p)-[:likes]->(b)<-[:likes]-(a)
WHERE a <> p
RETURN p.name, b.title
// EXTRA
START a=node:node_auto_index(name="Adolfo")
MATCH (a)-[:likes]->(b1)<-[:likes]-(p)-[:likes]->(b2),
(a)-[:follows*1..2]->(p)
WHERE b1 <> b2 AND a <> p
RETURN b1.title, p.name, b2.title;
//tmp
START a=node:node_auto_index(name="Adolfo")
MATCH (a)-[:likes]->(b1)<-[:likes]-(p)-[:likes]->(b2)
WHERE b1 <> b2 AND a <> p
RETURN b1.title, b2.title, p.name
START a=node:node_auto_index(name="Adolfo")
MATCH (a)-[:likes]->(b1)<-[:likes]-(p)-[:likes]->(b2)
WHERE b1 <> b2 AND a <> p
WITH b2, count(DISTINCT p) AS people
RETURN b2.title, people
ORDER BY people DESC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment