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.
To add a label when creating a node, use the syntax below.
Query.
CREATE (n:Person)
Nothing is returned from this query.
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.
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.
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.
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.
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 |
|
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 © 2014 Neo Technology