Reader small image

You're reading from  Learning Neo4j

Product typeBook
Published inAug 2014
Reading LevelBeginner
Publisher
ISBN-139781849517164
Edition1st Edition
Languages
Tools
Concepts
Right arrow
Author (1)
Rik Van Bruggen
Rik Van Bruggen
author image
Rik Van Bruggen

Rik Van Bruggen is the VP of Sales for Neo Technology for Benelux, UK, and the Nordic region. He has been working for startup companies for most of his career, including eCom Interactive Expertise, SilverStream Software, Imprivata, and Courion. While he has an interest in technology, his real passion is business and how to make technology work for a business. He lives in Antwerp, Belgium, with his wife and three lovely kids, and enjoys technology, orienteering, jogging, and Belgian beer.
Read more about Rik Van Bruggen

Right arrow

Key operative words in Cypher


Like every database query language, there are a few operative words that have an important meaning in the composition of every query. It's useful for you to know these since you will be using them to compose your specific queries on your specific datasets.

Keyword

Function

Example

MATCH

This describes a pattern that the database should match. This is probably the most important piece of the query as it is a structural component that always starts your queries.

MATCH (me:Person)-[:KNOWS]->(friend)

WHERE

This filters results that are found in the match for specific criteria.

WHERE me.name = "My Name" AND me.age > 18

RETURN

This returns results. You can either return paths, nodes, relationships, or their properties—or an aggregate of the mentioned parameters. This is another structural component, as all read queries and most write queries will return some data.

RETURN me.name, collect(friend), count(*) as friends

WITH

This passes results from one query part to the next. Much like RETURN, but instead of including data in the result set, it will be passed to the following part of the query. It transforms and aggregates results and also separates READ and UPDATE statements.

 

ORDER BY

SKIP

LIMIT:

This sorts and paginates the results.

ORDER BY friends DESC SKIP 10 LIMIT 10

CREATE

This creates nodes and relationships with their properties.

CREATE (p:Person), (p)-[:KNOWS {since: 2010}]-> (me:Person {name:"My Name"})

CREATE UNIQUE

This fixes graph structures by only creating structures if they do not yet exist.

 

MERGE

This matches or creates semantics by using indexes and locks. You can specify different operations in case of a MATCH (part of the pattern already existed) or on CREATE (pattern did not exist yet).

MERGE (me:Person {name:"My Name"})

ON MATCH me SET me.accessed = timestamp()

ON CREATE me SET me.age = 42

SET, REMOVE

This updates properties and labels on nodes and/or relationships.

SET me.age = 42SET me:Employee REMOVE me.first_name REMOVE me:Contractor

DELETE

It deletes nodes and relationships.

MATCH (me)

OPTIONAL MATCH (me)-[r]-() DELETE me, r

With these simple keywords, you should be able to start forming your first Cypher queries. After all, it's a bit like ASCII art, a structure similar to the one shown in the following diagram:

This is very easily described in Cypher as:

(a:Person {name:"Rik")–[:OWNS]–>(b:Device {brand:"LIFX"})

All we need to do to make this a proper Cypher statement is to wrap it in MATCH and RETURN statements:

Match
(a:Person {name:"Rik")–[r:OWNS]–>(b:Device {brand:"LIFX"})
return a,r,b;

This is just a simple example of how you would start using Cypher. More complex examples can of course be found elsewhere in this book. You can also find the complete Cypher Ref Card (online version at http://docs.neo4j.org/refcard/2.1/) included in the final pages of this book.

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Learning Neo4j
Published in: Aug 2014Publisher: ISBN-13: 9781849517164

Author (1)

author image
Rik Van Bruggen

Rik Van Bruggen is the VP of Sales for Neo Technology for Benelux, UK, and the Nordic region. He has been working for startup companies for most of his career, including eCom Interactive Expertise, SilverStream Software, Imprivata, and Courion. While he has an interest in technology, his real passion is business and how to make technology work for a business. He lives in Antwerp, Belgium, with his wife and three lovely kids, and enjoys technology, orienteering, jogging, and Belgian beer.
Read more about Rik Van Bruggen