-
Notifications
You must be signed in to change notification settings - Fork 8
Neo4j Learning Doc
2018/10/29 陈雨蕾
[TOC]
Neo4j is an open-source, high-performance, enterprise-grade NOSQL graph database.

节点是图表的基本单位,它包含具有键值对的属性
属性是用于描述图节点和关系的键值对
关系是图形数据库的一个主要构建块,它连接两个节点
标签将一个公共名称与一组节点或关系相关联。 节点或关系可以包含一个或多个标签,我们可以为现有节点或关系创建新标签,也可以从现有节点或关系中删除现有标签
MacOS Desktop版下载地址:https://neo4j.com/download/
1. CREATE命令为节点创建单个标签
语法:
CREATE (<node-name>:<label-name>)语法说明:
| 语法元素 | 描述 |
|---|---|
| CREATE | 它是一个Neo4j CQL命令。 |
| <node-name> | 它是我们要创建的节点名称。 |
| <label-name> | 它是一个节点标签名称 |
2. CREATE命令创建具有属性的节点
语法:
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)语法说明:
| 语法元素 | 描述 |
|---|---|
| <node-name> | 它是我们将要创建的节点名称。 |
| <label-name> | 它是一个节点标签名称 |
| <Property1-name>...<Propertyn-name> | 属性是键值对。 定义将分配给创建节点的属性的名称 |
| <Property1-value>...<Propertyn-value> | 属性是键值对。 定义将分配给创建节点的属性的值 |
3. CREATE命令为节点创建多个标签
语法:
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)
语法说明:
| 语法元素 | 描述 |
|---|---|
| CREATE 创建 | 这是一个Neo4j CQL关键字。 |
| <node-name> <节点名称> | 它是一个节点的名称。 |
| <label-name1>,<label-name2> <标签名1>,<标签名2> | 它是一个节点的标签名称的列表。 |
4. CREATE命令为关系创建单个标签
语法:
CREATE (<node1-name>:<label1-name>)-
[(<relationship-name>:<relationship-label-name>)]
->(<node2-name>:<label2-name>)语法说明:
| 语法元素 | 描述 |
|---|---|
| CREATE 创建 | 它是一个Neo4J CQL关键字。 |
| <node1-name> <节点1名> | 它是From节点的名称。 |
| <node2-name> <节点2名> | 它是To节点的名称。 |
| <label1-name> <LABEL1名称> | 它是From节点的标签名称 |
| <label1-name> <LABEL1名称> | 它是To节点的标签名称。 |
| <relationship-name> <关系名称> | 它是一个关系的名称。 |
| <relationship-label-name> <相关标签名称> | 它是一个关系的标签名称。 |
语法:
MATCH
(
<node-name>:<label-name>
)语法说明:
| 语法元素 | 描述 |
|---|---|
| <node-name> | 这是我们要创建一个节点名称。 |
| <label-name> | 这是一个节点的标签名称 |
语法:
RETURN
<node-name>.<property1-name>,
........
<node-name>.<propertyn-name>语法说明:
| 语法元素 | 描述 |
|---|---|
| <node-name> | 它是我们将要创建的节点名称。 |
| <Property1-name>...<Propertyn-name> | 属性是键值对。 <Property-name>定义要分配给创建节点的属性的名称 |
在Neo4j CQL中,我们不能单独使用MATCH或RETURN命令,因此我们应该合并这两个命令以从数据库检索数据。
语法:
MATCH Command
RETURN Command语法说明:
| 语法元素 | 描述 |
|---|---|
| MATCH命令 | 这是Neo4j CQL MATCH命令。 |
| RETURN命令 | 这是Neo4j CQL RETURN命令。 |
简单WHERE子句语法:
WHERE <condition>
复杂WHERE子句语法:
WHERE <condition> <boolean-operator> <condition>
<condition>语法:
<property-name> <comparison-operator> <value>
语法说明:
| 语法元素 | 描述 |
|---|---|
| WHERE | 它是一个Neo4j CQL关键字。 |
| <property-name> <属性名称> | 它是节点或关系的属性名称。 |
| <comparison-operator> <比较运算符> | 它是Neo4j CQL比较运算符之一。 |
| <value> <值> | 它是一个字面值,如数字文字,字符串文字等。 |
1. 删除节点及其属性
语法:
DELETE <node-name-list>
语法说明:
| 语法元素 | 描述 |
|---|---|
| DELETE | 它是一个Neo4j CQL关键字。 |
| <node-name-list> | 它是一个要从数据库中删除的节点名称列表。 |
2. 删除节点及其关联节点和关系
语法:
DELETE <node1-name>,<node2-name>,<relationship-name>
语法说明:
| 语法元素 | 描述 |
|---|---|
| DELETE | 它是一个Neo4j CQL关键字。 |
| <node1-name> | 它是用于创建关系<relationship-name>的一个结束节点名称。 |
| <node2-name> | 它是用于创建关系<relationship-name>的另一个节点名称。 |
| <relationship-name> | 它是一个关系名称,它在<node1-name>和<node2-name>之间创建。 |
Neo4j CQL DELETE和REMOVE命令之间的主要区别:
- DELETE操作用于删除节点和关联关系。
- REMOVE操作用于删除标签和属性。
1. 删除节点/关系的属性
语法:
REMOVE <property-name-list>
语法说明:
| 语法元素 | 描述 |
|---|---|
| REMOVE | 它是一个Neo4j CQL关键字。 |
| <property-name-list> | 它是一个属性列表,用于永久性地从节点或关系中删除它。 |
<property-name-list> <属性名称列表>语法:
<node-name>.<property1-name>,
<node-name>.<property2-name>,
....
<node-name>.<propertyn-name>
语法说明:
| 语法元素 | 描述 |
|---|---|
| <node-name> | 它是节点的名称。 |
| <property-name> | 它是节点的属性名称。 |
2. 删除节点/关系的标签
语法:
REMOVE <label-name-list>
语法说明:
| 语法元素 | 描述 |
|---|---|
| REMOVE | 它是一个Neo4j CQL关键字。 |
| <label-name-list> | 它是一个标签列表。 |
<label-name-list>语法:
<node-name>:<label2-name>,
....
<node-name>:<labeln-name>
语法说明:
| 语法元素 | 描述 |
|---|---|
| <node-name> <节点名称> | 它是一个节点的名称。 |
| <label-name> <标签名称> | 这是一个节点的标签名称。 |
Neo4j CQL已提供SET子句来执行以下操作。
- 向现有节点或关系添加新属性
- 添加或更新属性值
语法:
SET <property-name-list>
语法说明:
| 语法元素 | 描述 |
|---|---|
| SET | 它是一个Neo4j的CQL关键字。 |
| <property-name-list> | 它是一个属性列表,用于执行添加或更新操作以满足我们的要求。 |
<property-name-list><属性名称列表>语法:
<node-label-name>.<property1-name>,
<node-label-name>.<property2-name>,
....
<node-label-name>.<propertyn-name>
语法说明:
| 语法元素 | 描述 |
|---|---|
| <node-label-name> <节点标签名称> | 这是一个节点的标签名称。 |
| <property-name> <属性名称> | 它是一个节点的属性名。 |