Creating graph elements — nodes and relationships, is done with CREATE
.
Tip | |
---|---|
In the |
Creating a single node is done by issuing the following query.
Query.
CREATE (n)
Nothing is returned from this query, except the count of affected nodes.
Try this query live. (0) create (n)
To add a label when creating a node, use the syntax below.
Query.
CREATE (n:Person)
Nothing is returned from this query.
Try this query live. (0) create (n:Person)
To add labels when creating a node, use the syntax below. In this case, we add two labels.
Query.
CREATE (n:Person:Swedish)
Nothing is returned from this query.
Try this query live. (0) create (n:Person:Swedish)
When creating a new node with labels, you can add properties at the same time.
Query.
CREATE (n:Person { name : 'Andres', title : 'Developer' })
Nothing is returned from this query.
Try this query live. (0) create (n:Person {name : 'Andres', title : 'Developer'})
To create a relationship between two nodes, we first get the two nodes. Once the nodes are loaded, we simply create a relationship between them.
Query.
MATCH (a:Person),(b:Person) WHERE a.name = 'Node A' AND b.name = 'Node B' CREATE (a)-[r:RELTYPE]->(b) RETURN r
The created relationship is returned by the query.
Try this query live. create (_0:`Person` {`name`:"Node A"}) create (_1:`Person` {`name`:"Node B"}) match (a:Person), (b:Person) where a.name = 'Node A' and b.name = 'Node B' create (a)-[r:RELTYPE]->(b) return r
Setting properties on relationships is done in a similar manner to how it’s done when creating nodes. Note that the values can be any expression.
Query.
MATCH (a:Person),(b:Person) WHERE a.name = 'Node A' AND b.name = 'Node B' CREATE (a)-[r:RELTYPE { name : a.name + '<->' + b.name }]->(b) RETURN r
The newly created relationship is returned by the example query.
Try this query live. create (_0:`Person` {`name`:"Node A"}) create (_1:`Person` {`name`:"Node B"}) match (a:Person), (b:Person) where a.name = 'Node A' and b.name = 'Node B' create (a)-[r:RELTYPE {name : a.name + '<->' + b.name }]->(b) return r
When you use CREATE
and a pattern, all parts of the pattern that are not already in scope at this time
will be created.
Query.
CREATE p =(andres { name:'Andres' })-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael { name:'Michael' }) RETURN p
This query creates three nodes and two relationships in one go, assigns it to a path identifier, and returns it.
Result
p |
---|
1 row |
Nodes created: 3 |
Relationships created: 2 |
Properties set: 2 |
|
Try this query live. (0) create p = (andres {name:'Andres'})-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael {name:'Michael'}) return p
You can also create a graph entity from a map.
All the key/value pairs in the map will be set as properties on the created relationship or node.
In this case we add a Person
label to the node as well.
Parameters.
{ "props" : { "name" : "Andres", "position" : "Developer" } }
Query.
CREATE (n:Person { props }) RETURN n
Result
n |
---|
1 row |
Nodes created: 1 |
Properties set: 2 |
Labels added: 1 |
|
By providing Cypher an array of maps, it will create a node for each map.
Note | |
---|---|
When you do this, you can’t create anything else in the same |
Parameters.
{ "props" : [ { "name" : "Andres", "position" : "Developer" }, { "name" : "Michael", "position" : "Developer" } ] }
Query.
CREATE (n { props }) RETURN n
Result
n |
---|
2 rows |
Nodes created: 2 |
Properties set: 4 |
|
|
Copyright © 2013 Neo Technology