neo4j数据库学习
What is a graph database? - Getting Started (neo4j.com)
以官方文档进行学习:
neo4j是图形数据库,存储节点与关系。
图数据库规范:Graph database concepts - Getting Started (neo4j.com)
图数据库neo4j
Neo4j 使用属性图 数据库模型。 图形数据结构由可以通过关系连接的节点(离散对象)组成。
Neo4j 属性图数据库模型包括:
-
节点描述域的实体(离散对象)。
-
节点可以有零个或多个标签来定义(分类)它们是哪种类型的节点。
-
关系描述源节点 和目标节点 之间的连接。
-
关系总是有一个方向(一个方向)。
-
关系必须具有类型(一种类型)来定义(分类)它们是什么类型的关系。
-
节点和关系可以具有属性(键值对),这些属性可以进一步描述它们。
示例

CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956}) (节点)
-[:ACTED_IN {roles: ['Forrest']}]-> (关系)
(:Movie {title: 'Forrest Gump', released: 1994})<-[:DIRECTED]-(:Person {name: 'Robert Zemeckis', born: 1951}) (节点)
节点
节点用于表示域的实体(离散对象)。

节点标签为: 一个节点可以有零到多个标签。
-
Person -
Actor
这些属性包括:
-
name: Tom Hanks -
born: 1956
可以使用以下查询使用 Cypher 创建节点:
CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})
关系
关系描述源节点和目标节点之间的连接之间的关系。 节点可能与自身有关系。
关系:
-
连接源节点和目标节点。
-
有一个方向(一个方向)。
-
必须具有类型(一种类型)来定义(分类)它是什么类型的关系。
-
可以具有属性(键值对),用于进一步描述关系。
CREATE ()-[:ACTED_IN {roles: ['Forrest'], performance: 5}]->()
关系类型:ACTED_IN, 关系必须只具有一种关系类型。
这些属性包括 roles: ['Forrest'] performance: 5
属性类型
属性是用于在节点和关系上存储数据的键值对。
属性的值部分:
-
可以保存不同的数据类型,例如 、 或 。
numberstringboolean -
可以保存包含字符串、数字或布尔值等的同类列表(数组)
{c: 'This is an example string', d: true, e: false}) {a: 1, b: 3.14} {f: [1, 2, 3], g: [2.71, 3.14], h: ['abc', 'example'], i: [true, true, false]}
遍历与路径
遍历是查询图形以查找问题的答案的方式。
找出汤姆·汉克斯(Tom Hanks)出演了哪些电影,遍历将从节点开始,跟踪连接到节点的任何关系,并以节点作为结果(参见黑线):Tom HanksACTED_INMovieForrest Gump

最短路径的长度为零。 它包含单个节点,没有关系。
仅包含单个节点的长度为 0的路径


包含一个关系的长度为1的路径
"schema"(模式)
在数据库领域,"schema"(模式)是指用于描述数据库中数据结构的元数据集合。它定义了数据的组织结构、数据类型、约束条件等信息。
在 Neo4j 中,schema 通常用于指代索引和约束,这些索引和约束可以提高查询性能并确保数据的完整性。
- 索引是用于提高数据库查询性能的数据结构,通常是一种有序的数据结构,加快了数据的检索速度。
- 约束是用于确保数据库数据完整性和一致性的规则或条件。
索引
![]()
以下查询创建一个索引,以加快在数据库中按名称查找 actor 的速度:
CREATE INDEX example_index_1 FOR (a:Actor) ON (a.name)
可以查询数据库以找出定义了哪些索引。SHOW INDEXES
SHOW INDEXES YIELD name, labelsOrTypes, properties, type

约束
约束用于确保数据符合域的规则。
唯一性约束
示例:为标签为Movie的节点创建约束,约束其title属性时唯一的。
CREATE CONSTRAINT constraint_example_1 FOR (movie:Movie) REQUIRE movie.title IS UNIQUE
添加唯一约束将隐式添加该属性的索引。 如果删除了约束,但仍需要索引,则必须显式创建索引。
可以将约束添加到已包含数据的数据库中。 这要求现有数据符合正在添加的约束。
此示例显示了一个 Cypher 查询,该查询返回已为数据库定义的约束。
SHOW CONSTRAINTS YIELD id, name, type, entityType, labelsOrTypes, properties, ownedIndexId

约束创建语法
语法 - Cypher Manual (neo4j.com)

浙公网安备 33010602011771号