Skip to content

Instantly share code, notes, and snippets.

@nawroth
Last active December 28, 2015 03:28
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 nawroth/7434876 to your computer and use it in GitHub Desktop.
Save nawroth/7434876 to your computer and use it in GitHub Desktop.

Using labels

Labels is a convenient way to group nodes together. They are used to enhance queries, define constraints and indexes.

The following will give an example of how to use labels. Let’s start out adding a constraint — in this case we decided that all Movie nodes should have a unique title.

CREATE CONSTRAINT ON (movie:Movie) ASSERT movie.title IS UNIQUE

Note that adding the unique constraint will add an index on that property, so we won’t do that separately. If we drop the constraint, we will have to add an index instead.

In this case we want an index to speed up finding actors by name in the database:

CREATE INDEX ON :Actor(name)

Indexes can be added at any time. Constraints can be added afterwards as well, but that requires that the existing data complies with the constraints.

Now, let’s add some data.

CREATE (actor:Actor {name:"Tom Hanks"}),
  (movie:Movie {title:'Sleepless in Seattle'}),
  (actor)-[:ACTED_IN]->(movie);

Normally you don’t specify indexes when querying for data. They will be used automatically. This means we can simply look up the Tom Hanks node, and the index will kick in behind the scenes.

MATCH (actor:Actor {name: "Tom Hanks"})
RETURN actor;

Now let’s say we want to add another label for a node. Here’s how to do that:

MATCH (actor:Actor {name: "Tom Hanks"})
SET actor :American;

To remove a label, this is what to do:

MATCH (actor:Actor {name: "Tom Hanks"})
REMOVE actor:American;

For more information on labels and related topics, see:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment