系统id
每个节点或关系都有个系统分配的id,从0开始递增,全局唯一。我们通过表创建的id只是一种属性,和系统内置id是二个不同的东西。
我们可以通过通过函数id(node/relation) 可以获取id值
MATCH (n:Person) RETURN id(n) LIMIT 25
方向关系
在Neo4j中,两个节点之间的关系是有方向性的。 它们是单向或双向的。
由于Neo4j遵循属性图数据模型,它应该只支持方向关系。 如果我们尝试创建一个没有任何方向的关系,那么Neo4j DB服务器应该抛出一个错误。
我们使用以下语法来创建两个节点之间的关系。
CREATE (<node1-details>)-[<relationship-details>]->(<node2-details>)
node1-details是”From Node”节点详细信息。
node2-details是“到节点”节点详细信息。
relationship-details是关系详细信息。
如果我们观察上面的语法,它使用一个箭头标记:() - []→()。 它表示从左侧节点到右侧节点的方向。
索引 index
索引用于增加查询速度、查询性能。
使用索引非常简单
create index on :Person(id);
drop index on :Person(id);
属性唯一约束 CONSTRAINT
我们可以给某一属性设置唯一约束:
CREATE CONSTRAINT ON (a:Person) ASSERT a.id IS UNIQUE
drop CONSTRAINT ON (a:Person) ASSERT a.id IS UNIQUE
常用函数
- UPPER 它用于将所有字母更改为大写字母。
- LOWER 它用于将所有字母改为小写字母。
- SUBSTRING 它用于获取给定String的子字符串。
- REPLACE 它用于替换一个字符串的子字符串。
简单示例
Match (n:Person) return SUBSTRING(n.id,2,0),n.id
聚集函数
- COUNT 它返回由MATCH命令返回的行数。
- MAX 它从MATCH命令返回的一组行返回最大值。
- MIN 它返回由MATCH命令返回的一组行的最小值。
- SUM 它返回由MATCH命令返回的所有行的求和值。
- AVG 它返回由MATCH命令返回的所有行的平均值。
简单示例
Match (n:Person) return count(*)
Match (n:Person) return avg(n.age) 只包含age不为空的node
shortestPath 查询最短路径
6层关系理论:任何两个事物之间的关系都不会超过6层。
[*..n] 用于表示获取n层关系
match p=shortestPath((n:Person {id:'mama'})-[*..3]-(b:Person {id:'nainai'})) return p
关系链路越短,代表这两个节点的关系越密切!