Neo4j
Neo4j Solutions
Library database:
create(author:Person{name:"John Le Carre",born:19-10-1932})
create(reader:Person{name:"lan"})
create(reader:Person{name:"Alan"})
create(supplier:Person{name:"Rahul"})
create(book1:Book{name:"Story Book",title:["Tinker","Tailor","Soldier","spy"],published:1974,city:"Pune"})
create(book2:Book{name:"Suspens Story Book",title:"One Man in Havana",published:1958,city:'Mumbai'})
create(publisher1:Publisher{name:'Mr.Joshi',City:'Pune'})
match(n) return n
Relationships:
match(a:Publisher),(b:Book) where a.name="Mr.Joshi" and b.name="Story Book" create (a)-[r1:published_by]->(b)
match(a:Publisher),(b:Book) where a.name="Mr.Joshi" and b.name="Suspense Story Book" create (a)-[r1:published_by]->(b)
match(a:Person),(b:Book) where a.name="John Le Carre" and b.name="Story Book" create (a)-[r1:WROTE]->(b)
match(a:Person),(b:Book) where a.name="Alan" and b.name="Story Book" create (a)-[r4:Issued_by]->(b) return a,b
match(a:Person),(b:Book) where a.name="lan" and b.name="Suspense Story Book" create (a)-[r4:Issued_by]->(b) return a,b
match(a:Person),(b:Book) where a.name="Mr.John" and b.name="Suspens Story Book" create (a)-[r5:WROTE]->(b)
match(a:Person),(b:Book) where a.name="Alan" and b.name="Story Book" create (a)-[r2:RECOMMENDED{date:05-07-2011}]->(b)
match(a:Person),(b:Book) where a.name="Alan" and b.name="Story Book" create (a)-[r3:READ{date:9-9-2011}]->(b)
match(a:Person),(b:Book) where a.name="Rahul" and b.name="Story Book" create (a)-[r3:Supplies]->(b)
match(a:Person),(b:Book) where a.name="Rahul" and b.name="Suspens Story Book" create (a)-[r3:Supplies]->(b)
match(a:Person),(b:Book) where a.name="lan" and b.name="Suspense Story Book" create (a)-[r3:READ{date:9-9-2011}]->(b)
If we want to delete particular relationship then use below code
match (a)-[r3:READ{date:9-9-2011}]->(b) Delete r3
Queries
1] List all people, who have issued a book “Our Man in Havana”.
MATCH (rd:Person)-[r:Issued_by]->(b:Book)
WHERE b.title='One Man in Havana' and rd.name='lan'
RETURN b,r,rd
2] Count the number of people who have read “….”
MATCH (a:Person)-[r:READ]->(b:Book)
WHERE b.title="One Man in Havana"
RETURN COUNT(a)
COUNT(a)
1
1
3] Add a property
“Number of books issued “ for Mr. Joshi and set its value as the count
MATCH (ir:Person{name:'lan'})
SET ir.No_of_Issued=1
RETURN ir
4] List the names of publishers from pune city
match(p:Publisher{City:'Pune'})
return p.name
OutPut:
p.name
"Mr.Joshi"
5:List all readers who have recommended either book "Tinker","Tailor","Soldier","spy"] or "One Man in Havana"
MATCH (a:Person)-[r:RECOMMENDED]->(b:Book) WHERE b.title=["Tinker","Tailor","Soldier","spy"] OR b.title="One Man in Havana" RETURN a
╒═══════════════╕
│"a" │
╞═══════════════╡
│{"name":"Alan"}│
└───────────────┘
6: List the readers who haven’t recommended any book
MATCH (a:Person) WHERE NOT (a:Person)-[:RECOMMENDED]->(:Book) return a
════════════════════════════════════════════╕
│"a" │
╞════════════════════════════════════════════╡
│{"born":-1923,"name":"John Le Carre"} │
├────────────────────────────────────────────┤
│{"name":"lan","No_of_Issued":1} │
├────────────────────────────────────────────┤
│{"name":"Rahul"} │
├────────────────────────────────────────────┤
│{"born":-1912,"name":"Mr.John","died":-1993}│
├────────────────────────────────────────────┤
│{"born":-1923,"name":"John Le Carre"} │
└───────────────────────────────────────
7: List the reader names who have read/ issued books and display their count.
MATCH (a:Person)-[r:Issued_by]->(b:Book) RETURN a.name,b.title,COUNT(b)
╒════════╤═══════════════════════════════════╤══════════╕
│"a.name"│"b.title" │"COUNT(b)"│
╞════════╪═══════════════════════════════════╪══════════╡
│"lan" │"One Man in Havana" │1 │
├────────┼───────────────────────────────────┼──────────┤
│"Alan" │["Tinker","Tailor","Soldier","spy"]│1 │
└────────┴───────────────────────────────────┴──────────┘
8: List the names of voracious readers in our library
MATCH (a:Person) WHERE NOT(a:Person)-[:Issued_by]->(:Book) RETURN a.name
╒═══════════════╕
│"a.name" │
╞═══════════════╡
│"John Le Carre"│
├───────────────┤
│"Rahul" │
├───────────────┤
│"Mr.John" │
├───────────────┤
│"John Le Carre"│
└───────────────┘
Song Database:
create(artist:person{name:"Luis"})
create(Song:song{name:"Tu hi Haqeeqat"})
create(SongAuthor:person{name:"Javed Ali"})
create(RecordingStudio:place{name:"Mumbai"})
create(RecordingCompany:RC{name:"T-Series"})
match(n) return (n)
Relationships:
match(a:person),(b:song) where a.name="Luis" and b.name="Tu hi Haqeeqat" create (a)-[r1:PERFORMS]->(b)
match(a:song),(b:person) where a.name="Tu hi Haqeeqat" and b.name="Javed Ali" create (a)-[r2:WRITTEN_BY]->(b)
match(a:song),(b:place) where a.name="Tu hi Haqeeqat" and b.name="Mumbai" create (a)-[r3:RECORDED_IN]->(b) return a,b
match(a:place),(b:RC) where a.name="Mumbai" and b.name="T-Series" create (a)-[r4:MANAGED_BY]->(b)
match(a:RC),(b:song) where a.name="T-Series" and b.name="Tu hi Haqeeqat" create (a)-[r5:FINANCES]->(b)
Queries
1:List the names of songs written by“:…..”
match(a:song)-[WRITTEN_BY]->(b:person{name:'Javed Ali'}) where a.name="Tu hi Haqeeqat" return a
╒═════════════════════════╕
│"a" │
╞═════════════════════════╡
│{"name":"Tu hi Haqeeqat"}│
└─────────────────────────┘
2: List the names of record companies who have financed for the song“….”
Match(rec:RC)-[r:FINANCES]->(s:song) where s.name='Tu hi Haqeeqat' return rec,s
╒═══════════════════╤═════════════════════════╕
│"rec" │"s" │
╞═══════════════════╪═════════════════════════╡
│{"name":"T-Series"}│{"name":"Tu hi Haqeeqat"}│
└───────────────────┴─────────────────────────┘
3: List the names of artist performing the song“…..”
MATCH (a:person)-[r:PERFORMS]->(s:song) WHERE s.name='Tu hi Haqeeqat' RETURN a,s
╒═══════════════╤═════════════════════════╕
│"a" │"s" │
╞═══════════════╪═════════════════════════╡
│{"name":"Luis"}│{"name":"Tu hi Haqeeqat"}│
└───────────────┴─────────────────────────┘
4:Name the songs recorded by the studio “…….”
MATCH (s:song)-[r:RECORDED_IN]->(rec:place) WHERE rec.name='Mumbai' RETURN s, rec
╒═════════════════════════╤═════════════════╕
│"s" │"rec" │
╞═════════════════════════╪═════════════════╡
│{"name":"Tu hi Haqeeqat"}│{"name":"Mumbai"}│
└─────────────────────────┴─────────────────┘
Movie Database:
create(actor:Actor{name:"Kartik",add:"Mumbai",phno:"2346568687"})
create(movies:movie{name:"Luka Chupi",year:2019,rate:'3'})
create(roles:rol{name:"Hero"})
create(producer:prd{name:"Laxman Utekar",phno:'7856749543',add:"Mumbai"})
create(financer:Financer{name:"Dinesh Vijan",add:"Pune",phno:6478987445})
create(Director:director{name:"Mohit Suri",add:"US",phno:7658342189})
create(movies:movie{name:"Padmaavat",year:2018})
create(actor:Actor{name:"Shahid Kapoor,Ranbeer Kapoor",add:"UK",phno:4567893201})
create(actor:Actor{name:"Ranbeer Kapoor",add:"Pune",phno:8765340932})
match(Director) return Director
Relationships:
match(a:Actor),(b:movie) where a.name="Kartik" and b.name="Luka Chupi" create (a)-[r1:Acted]->(b)
match(a:prd),(b:movie) where a.name="Laxman Utekar" and b.name="Luka Chupi" create (a)-[r2:produced]->(b)
match(a:Financer),(b:movie) where a.name="Dinesh Vijan" and b.name="Luka Chupi" create (a)-[r3:financed]->(b)
match(a:director),(b:movie) where a.name="Mohit Suri" and b.name="Luka Chupi" create (a)-[r4:direct]->(b)
match(a:Person),(b:rol) where a.name="Kartik" and b.name="Hero" create (a)-[r5:play_as]->(b)
match(a:Actor),(b:movie) where a.name="Ranbeer Kapoor" and b.name="Padmaavat" create (a)-[r2:Acted]->(b)
match(a:Actor),(b:movie) where a.name="Shahid Kapoor,Ranbeer Kapoor" and b.name="Padmaavat" create (a)-[r2:Acted]->(b)
match(a:prd),(b:movie) where a.name="Laxman Utekar" and b.name="Padmaavat" create (a)-[r2:produced]->(b)
Queries:
1: Find all actors who have acted in a movie “Luka Chupi”.
MATCH (p:Person)-[r1:Acted]->(m:movie)
where m.name='Luka Chupi'
return p.name
╒════════╕
│"p.name"│
╞════════╡
│"Kartik"│
└────────┘
2:Find all movies produced by “ Laxman Utekar ”
MATCH (p:prd)-[:produced]->(m:movie)
where p.name="Laxman Utekar"
Return m.name
╒════════════╕
│"m.name" │
╞════════════╡
│"Luka Chupi"│
├────────────┤
│"Padmaavat" │
└────────────┘
3: Find all actors that acted in a movie after 2010 and return the actor names and movie node
MATCH (p:Person)-[:Acted]->(m:movie)
WHERE m.year>2010
RETURN p.name, m.name
╒══════════════════════════════╤════════════╕
│"p.name" │"m.name" │
╞══════════════════════════════╪════════════╡
│"Kartik" │"Luka Chupi"│
├──────────────────────────────┼────────────┤
│"Shahid Kapoor,Ranbeer Kapoor"│"Padmaavat" │
└──────────────────────────────┴────────────┘
Employee database:
CREATE (Emp1:Emp {name:'Harry', Qualification:'MCS', experience:8})
CREATE (Emp2:Emp {name:'Kevin', Qualification:'MCA', experience:6})
CREATE (Emp3:Emp {name:'Jayson', Qualification:'B.Tech', experience:7})
CREATE (Dept1:Dept {name:'IT', no_of_employees:5})
CREATE (Dept2:Dept {name:'BPO', no_of_employees:3})
CREATE (Skill1:SkillSet {name:'skill1',skills:['Good Communication','Java Devloper']})
CREATE (Skill2:SkillSet {name:'skill2',skills:['Fluent Communication','Leadership
Qualities','Optimistic']})
CREATE (Proj1:Project {name:'SG Website Design', TimeSpan:'30days'})
CREATE (Proj2:Project {name:'Food Deliver app', TimeSpan:'35days'})
CREATE (Proj3:Project {name:'Ecommerce Website Design', TimeSpan:'50days'})
Relationships:
MATCH (a:Emp),(b:Dept) WHERE a.name='Harry' AND b.name='IT' CREATE (a)-[:Works_In]->(b)
MATCH (a:Emp),(b:Dept) WHERE a.name='Kevin' AND b.name='BPO' CREATE (a)-[:Works_In]->(b)
MATCH (a:Emp),(b:Dept) WHERE a.name='Kevin' AND b.name='IT' CREATE (a)-[:Works_In]->(b)
MATCH (a:Emp),(b:Dept) WHERE a.name='Jayson' AND b.name='BPO' CREATE (a)-[:Works_In]->(b)
MATCH (a:Emp),(b:SkillSet) WHERE a.name='Harry' AND b.name='skill1' CREATE (a)-[:Acquires]->(b)
MATCH (a:Emp),(b:SkillSet) WHERE a.name='Kevin' AND b.name='skill2' CREATE (a)-[:Acquires]->(b)
MATCH (a:Emp),(b:SkillSet) WHERE a.name='Jayson' AND b.name='skill1' CREATE (a)-[:Acquires]->(b)
MATCH (a:Emp),(b:SkillSet) WHERE a.name='Jayson' AND b.name='skill2' CREATE (a)-[:Acquires]->(b)
MATCH (a:Emp),(b:Project) WHERE a.name='Kevin' AND b.name='SG Website Design'CREATE (a)-[:Assigned_To]->(b)
MATCH (a:Emp),(b:Project) WHERE a.name='Kevin' AND b.name='Food Deliver app'CREATE (a)-[:Assigned_To]->(b)
MATCH (a:Emp),(b:Project) WHERE a.name='Jayson' AND b.name='Food Deliver app'CREATE (a)-[:Assigned_To]->(b)
MATCH (a:Emp),(b:Project) WHERE a.name='Harry' AND b.name='Ecommerce Website Design' CREATE (a)-[:Assigned_To]->(b)
MATCH (a:Project),(b:Dept) WHERE a.name='Ecommerce Website Design' AND b.name='IT'CREATE (a)-[:Controlled_By]->(b)
MATCH (a:Project),(b:Dept) WHERE a.name='SG Website Design' AND b.name='IT'CREATE (a)-[:Controlled_By]->(b)
MATCH (a:Project),(b:Dept) WHERE a.name='Food Deliver app' AND b.name='BPO'CREATE (a)-[:Controlled_By]->(b)
MATCH (a:Emp),(b:Project) WHERE a.name='Kevin' AND b.name='Food Deliver app'CREATE (b)-[:Project_Manager]->(a)
1: List the names of employees in department “BPO”.
MATCH (e:Emp)-[:Works_In]->(d:Dept) WHERE d.name='BPO' return e.name
╒════════╕
│"e.name"│
╞════════╡
│"Jayson"│
├────────┤
│"Kevin" │
└────────┘
2: List the projects along with their properties, controlled by department “IT”.
match (d:Dept{name:'IT'})<-[:Controlled_By]-(p:Project) return p
OR
match (d:Dept)<-[:Controlled_By]-(p:Project)where d.name='IT' return p
╒═══════════════════════════════════════════════════════╕
│"p" │
╞═══════════════════════════════════════════════════════╡
│{"TimeSpan":"30days","name":"SG Website Design"} │
├───────────────────────────────────────────────────────┤
│{"TimeSpan":"50days","name":"Ecommerce Website Design"}│
3: List the departments along with the count of employees in it.
match (e:Emp)-[:Works_In]->(d:Dept) return d,COUNT(e)
╒══════════════════════════════════╤══════════╕
│"d" │"COUNT(e)"│
╞══════════════════════════════════╪══════════╡
│{"name":"IT","no_of_employees":5} │2 │
├──────────────────────────────────┼──────────┤
│{"name":"BPO","no_of_employees":3}│2 │
└──────────────────────────────────┴──────────┘
4: List the skillset for an employee “Jayson”.
MATCH (e:Emp{name:'Jayson'})-[:Acquires]->(s:SkillSet) return s
OR
MATCH (e:Emp)-[:Acquires]->(s:SkillSet) where e.name='Jayson'return s
╒══════════════════════════════════════════════════════════════════════╕
│"s" │
╞══════════════════════════════════════════════════════════════════════╡
│{"skills":["Fluent Communication","Leadership
\nQualities","Optimistic│
│"],"name":"skill2"} │
├──────────────────────────────────────────────────────────────────────┤
│{"skills":["Good Communication","Java Devloper"],"name":"skill1"} │
└──────────────────────────────────────────────────────────────────────┘
5: List the projects controlled by a department “BPO” and have employees of the same department working in it.
match (d:Dept{name:'BPO'})<-[:Controlled_By]-(p:Project)<-[:Assigned_To]-(e:Emp),
(e:Emp)-[:Works_In]->(d:Dept) return d,p,e
╒══════════════════════════════════╤═══════════════════════════════════════════════╤═════════════════════════════════════════════════════════╕
│"d" │"p" │"e" │
╞══════════════════════════════════╪═══════════════════════════════════════════════╪═════════════════════════════════════════════════════════╡
│{"name":"BPO","no_of_employees":3}│{"TimeSpan":"35days","name":"Food Deliver app"}│{"Qualification":"B.Tech","name":"Jayson","experience":7}│
├──────────────────────────────────┼───────────────────────────────────────────────┼─────────────────────────────────────────────────────────┤
│{"name":"BPO","no_of_employees":3}│{"TimeSpan":"35days","name":"Food Deliver app"}│{"Qualification":"MCA","name":"Kevin","experience":6} │
└──────────────────────────────────┴───────────────────────────────────────────────┴─────────────────────────────────────────────────────────
6: List the names of the projects belonging to departments managed by employee “Kevin”.
match (e:Emp{name:'Kevin'})<-[:Project_Manager]-(p:Project)-[:Controlled_By]->(d:Dept)
return p,d
╒═══════════════════════════════════════════════╤══════════════════════════════════╕
│"p" │"d" │
╞═══════════════════════════════════════════════╪══════════════════════════════════╡
│{"TimeSpan":"35days","name":"Food Deliver app"}│{"name":"BPO","no_of_employees":3}│
└───────────────────────────────────────────────┴──────────────────────────────────┘
Comments
Post a Comment