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. (1) {} create n
The values for the properties can be any scalar expressions.
Query
CREATE n = {name : 'Andres', title : 'Developer'}
Nothing is returned from this query.
Try this query live. (1) {"name":"Andres","title":"Developer"} create n = {name : 'Andres', title : 'Developer'}
Creating a single node is done by issuing the following query.
Query
CREATE (a {name : 'Andres'}) RETURN a
The newly created node is returned. This query uses the alternative syntax for single node creation.
Try this query live. (1) {"name":"Andres"} create (a {name : 'Andres'}) return a
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
START a=node(1), b=node(2) CREATE a-[r:RELTYPE]->b RETURN r
The created relationship is returned by the query.
Try this query live. (1) {} (2) {} (1)-[:RELTYPE]->(2) {} start a=node(1), b=node(2) 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
START a=node(1), b=node(2) 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. (1) {"name":"Andres"} (2) {"name":"Michael"} (1)-[:RELTYPE]->(2) {"name":"Andres\u003c-\u003eMichael"} start a=node(1), b=node(2) 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 |
6 ms |
|
Try this query live. (1) {"name":"Andres"} (2) {} (3) {"name":"Michael"} (1)-[:WORKS_AT]->(2) {} (3)-[:WORKS_AT]->(2) {} 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<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 © 2012 Neo Technology