CREATE
子句用于创建图的顶点和边。
终止性CREATE子句
一个未被其他子句跟随的CREATE
子句被称为终止子句。当Cypher查询以终止子句结束时,Cypher函数调用不会返回任何结果。然而,Cypher函数调用仍然需要列定义。当Cypher以终止节点结束时,在列定义中定义一个单一值:在这个变量中不会返回任何数据。
示例
SELECT *
FROM cypher('graph_name', $$
CREATE /* 在这里创建子句,没有后续子句 */
$$) as (a agtype);
返回结果如下:
a
---
(0 rows)
数据准备
SELECT create_graph('graph_name');
创建单个顶点
创建单个顶点可以通过发出以下查询来完成。
示例
SELECT *
FROM cypher('graph_name', $$
CREATE (n)
$$) as (v agtype);
此查询不会返回任何内容。
v
---
(0 rows)
创建多个顶点
通过逗号分隔来创建多个顶点。
示例
SELECT *
FROM cypher('graph_name', $$
CREATE (n), (m)
$$) as (v agtype);
返回结果如下:
v
---
(0 rows)
创建带有标签的顶点
在创建顶点时添加标签,使用以下语法:
示例
SELECT *
FROM cypher('graph_name', $$
CREATE (:Person)
$$) as (v agtype);
此查询不会返回任何内容。
v
---
(0 rows)
创建带有标签和属性的顶点
您可以创建同时具备标签和属性的顶点。
示例
SELECT *
FROM cypher('graph_name', $$
CREATE (:Person {name: 'Andres', title: 'Developer'})
$$) as (n agtype);
此查询不会返回任何内容。
n
---
(0 rows)
返回创建的节点
您可以在同一个查询中创建并返回一个节点,如下所示:
示例
SELECT *
FROM cypher('graph_name', $$
CREATE (a {name: 'Andres'})
RETURN a
$$) as (a agtype);
将返回新创建的节点:
a
-----------------------------------------------------------
{id: 0; label: ''; properties: {name: 'Andres'}}::vertex
(1 row)
在两个节点之间创建边
要在两个顶点之间创建一条边,首先需要MATCH
这两个顶点。一旦节点匹配成功,就在它们之间创建一条边。
示例
SELECT *
FROM cypher('graph_name', $$
MATCH (a:Person), (b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[e:RELTYPE]->(b)
RETURN e
$$) as (e agtype);
将返回创建的边:
e
--------------------------------------------------------------------------
{id: 3; startid: 0, endid: 1; label: 'RELTYPE'; properties: {}}::edge
(1 row)
创建边并设置属性
在边上设置属性的方法与创建顶点时设置属性类似。请注意,值可以是任何表达式。
示例
SELECT *
FROM cypher('graph_name', $$
MATCH (a:Person), (b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[e:RELTYPE {name:a.name + '<->' + b.name}]->(b)
RETURN e
$$) as (e agtype);
将返回创建的边:
e
-------------------------------------------------------------------------------------------------
{id: 3; startid: 0, endid: 1; label: 'RELTYPE'; properties: {name: 'Node A<->Node B'}}::edge
(1 row)
创建完整路径
当使用CREATE
和模式时,所有当前不在作用域内的模式部分都将被创建。
示例
SELECT *
FROM cypher('graph_name', $$
CREATE p = (andres {name:'Andres'})-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael {name:'Michael'})
RETURN p
$$) as (p agtype);
将返回创建的边:
p
-------------------------------------------------------------------------------------------------
[{id:0; label: ‘’; properties:{name:’Andres’}}::vertex,
{id: 3; startid: 0, endid: 1; label: ‘WORKS_AT’; properties: {}}::edge,
{id:1; label: ‘’; properties: {}}::vertex,
{id: 3; startid: 2, endid: 1; label: ‘WORKS_AT’; properties: {}}::edge,
{id:2; label: ‘’; properties: {name:’Michael’}}::vertex]::path
(1 row)
该文章对您有帮助吗?