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 labels to the newly created node, you can either use LABEL
followed by an expression,or you can use the labels short form syntax.
Query.
CREATE (n:Person)
Nothing is returned from this query.
When creating a new node with labels, you can add properties using VALUES
at the same time
Query.
CREATE (n:Person { name : 'Andres' , title : 'Developer' })
Nothing is returned from this query.
Creating a single node is done by issuing the following query.
Query.
CREATE (a { name : 'Andres' }) RETURN a
The newly created node is returned.
The values for the properties can be any scalar expressions.
![]() | Caution |
---|---|
This syntax has been deprecated, please use the one in Section 14.1.4, “Return created node”. |
Query.
CREATE (n { 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.
Result
r |
---|
1 row |
Relationships created: 1 |
Properties set: 1 |
|
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<String,Object>
map. All
the key/value pairs in the map will be set as properties on the created
relationship or node.
Query.
create ({props})
This query can be used in the following fashion:
Map<String, Object> props = new HashMap<String, Object>(); props.put( "name", "Andres" ); props.put( "position", "Developer" ); Map<String, Object> params = new HashMap<String, Object>(); params.put( "props", props ); engine.execute( "create ({props})", params );
By providing an iterable of maps (Iterable<Map<String,Object>>
), Cypher will create a node for each map
in the iterable. When you do this, you can’t create anything else in the same create statement.
Query.
create (n {props}) return n
This query can be used in the following fashion:
Map<String, Object> n1 = new HashMap<String, Object>(); n1.put( "name", "Andres" ); n1.put( "position", "Developer" ); Map<String, Object> n2 = new HashMap<String, Object>(); n2.put( "name", "Michael" ); n2.put( "position", "Developer" ); Map<String, Object> params = new HashMap<String, Object>(); List<Map<String, Object>> maps = Arrays.asList( n1, n2 ); params.put( "props", maps ); engine.execute( "create (n {props}) return n", params );
Copyright © 2013 Neo Technology