5-Cypher进阶知识

系统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

常用函数

  1. UPPER 它用于将所有字母更改为大写字母。
  2. LOWER 它用于将所有字母改为小写字母。
  3. SUBSTRING 它用于获取给定String的子字符串。
  4. REPLACE 它用于替换一个字符串的子字符串。

简单示例

Match (n:Person) return SUBSTRING(n.id,2,0),n.id

聚集函数

  1. COUNT 它返回由MATCH命令返回的行数。
  2. MAX 它从MATCH命令返回的一组行返回最大值。
  3. MIN 它返回由MATCH命令返回的一组行的最小值。
  4. SUM 它返回由MATCH命令返回的所有行的求和值。
  5. 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

关系链路越短,代表这两个节点的关系越密切!

阅读更多

没有更多推荐了,返回首页