- Neo4j图数据库用图模型来存储和管理数据
- 关系是定向的(有方向)
- 依据方向性,Neo4j关系分为两类:
- 单向关系
- 双线关系
- 用CREATE命令创建两个节点之间的关系:
- 在两个现有节点之间创建无属性的关系
- 在两个现有节点之间创建有属性的关系
- 在两个新节点之间创建无属性的关系
- 在两个新节点之间创建有属性的关系
- 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
- 每个关系包含两个节点:
- 从节点(From Node)
- 到节点 (To Node)
- 对于节点,有两种关系:
- 外向关系
- 传入关系
在两个现有节点之间创建无属性的关系
用如下命令检索现有的两个节点,并创建它们之间的关系:
代码语言:javascript复制MATCH (<node1-label-name>:<node1-name>), (<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
语法说明:
S.No. | 语法元素 | 描述 |
---|---|---|
1. | MATCH,CREATE,RETURN | Neo4J CQL关键字。 |
2. | <node1-name> | 它用于创建关系的“From Node”的名称。 |
3. | <node1-label-name> | 它用于创建关系的“From Node”的标签名称。 |
4. | <node2-name> | 它用于创建关系的“To Node”的名称。 |
5. | <node2-label-name> | 它用于创建关系的“To Node”的标签名称。 |
6. | <relationship-name> | 这是一个关系的名称。 |
7. | <relationship-label-name> | 它是一个关系的标签名称。 |
RETURN子句是可选的,使用后可立即看到结果。
在两个现有节点之间创建有属性的关系
用如下命令在现有的两个节点之间创建有属性的关系:
代码语言:javascript复制MATCH (<node1-label-name>:<nade1-name>),(<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>{<define-properties-list}]
语法说明:
S.No. | 语法元素 | 描述 |
---|---|---|
1. | MATCH,CREATE,RETURN | 他们是Neo4J CQL关键词。 |
2. | <node1-name> | 它是用于创建关系的“From Node”的名称。 |
3. | <node1-label-name> | 它是用于创建关系的“From Node”的标签名称。 |
4. | <node2-name> | 它是用于创建关系的“To Node”的名称。 |
5. | <node2-label-name> | 它是用于创建关系的“To Node”的标签名称。 |
6. | <relationship-name> | 这是一个关系的名称。 |
7. | <relationship-label-name> | 它是一个关系的标签名称。 |
8. | <define-properties-list> | 它是分配给新创建关系的属性(名称 - 值对)的列表。 |
RETURN子句是可选的,使用后可立即看到结果。
<define-properties-list>的语法是:
代码语言:javascript复制{
<property1-name>:<property1-value>,
<property2-name>:<property2-value>,
...
<propertyn-name>:<propertyn-value>
}
注意:
- 使用Colon(:)运算符后来分割属性名称和值
- 使用Comma(,)运算符将Property于另一对Property分开
创建没有属性的节点和关系
以下语句创建数据库中不存在的节点和他们之间的新关系:
代码语言:javascript复制CREATE
(<node1-label-name>:<node1-name>)-
[<relationship-label-name>:<relationship-name>]->
(<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>
语法说明:
S.No. | 语法元素 | 描述 |
---|---|---|
1. | CREATE,RETURN | 他们是Neo4J CQL关键字。 |
2. | <node1-name> | 它用于创建关系的“From Node”的名称。 |
3. | <node1-label-name> | 它用于创建关系的“From Node”的标签名称。 |
4. | <node2-name> | 它用于创建关系的“To Node”的名称。 |
5. | <node2-label-name> | 它用于创建关系的“To Node”的标签名称。 |
6. | <relationship-name> | 这是一个关系的名称。 |
7. | <relationship-label-name> | 它是一个关系的标签名称。 |
RETURN子句是可选的,使用后可立即看到结果。
创建新节点和有属性的关系
以下语句创建数据库中没有的节点和他们之间有属性的新关系:
代码语言:javascript复制CREATE
(<node1-label-name>:<node1-name>{<define-properties-list>})-
[<relationship-label-name>:<relationship-name>{<define-properties-list>}]
->(<node1-label-name>:<node1-name>{<define-properties-list>})
RETURN <relationship-label-name>
S.No. | 语法元素 | 描述 |
---|---|---|
1. | CREATE,RETURN | 他们是Neo4J CQL关键字。 |
2. | <node1-name> | 它用于创建关系的“From Node”的名称。 |
3. | <node1-label-name> | 它用于创建关系的“From Node”的标签名称。 |
4. | <node2-name> | 它用于创建关系的“To Node”的名称。 |
5. | <node2-label-name> | 它用于创建关系的“To Node”的标签名称。 |
6. | <relationship-name> | 这是一个关系的名称。 |
7. | <relationship-label-name> | 它是一个关系的标签名称。 |
RETURN子句是可选的,使用后可立即看到结果。 {<define-property-list>}的内容格式如下:
代码语言:javascript复制{
<property1-name>:<property1-value>,
<property2-name>:<property2-value>,
...
<propertyn-name>:<propertyn-value>
}
检索关系节点的详细信息
使用MATCH RETURN来查看单独创建或者作为关系的一部分创建的节点的详细信息。
代码语言:javascript复制MATCH
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
S.No. | 语法元素 | 描述 |
---|---|---|
1. | MATCH,RETURN | 他们是Neo4j CQL关键字。 |
2. | <node1-label-name> | 它是用于创建关系的“From Node”的标签名称。 |
3. | <node2-label-name> | 它是用于创建关系的“To Node”的标签名称。 |
4. | <relationship-name> | 它是一个关系的名称。 |
5. | <relationship-label-name> | 它是关系的标签名称。 |