一 模式描述
Neo4j中基本元素有三种:结点(node)、关系(relationships)、路径(path)。Neo4j基于模式对graph查找,因此要想查找目标先得知道如何描述目标符合的模式。
1.1 结点的模式
1.1.1 结点的描述
结点通过小括号描述,结点名可省略。
(a)
()
1.1.2 结点的标签
结点标签通过":标签名"描述,结点至少要有一个标签。
(a:Label)
(a:Lable1:Lable2)
1.1.3结点的属性
结点属性通过"{key:val}"描述。
(a{name:'zs',id:1})
1.2关系的模式
1.2.1关系的描述
关系通过箭头连线"–>“描述,关系详情通过”[]"描述;箭头可省略、详情可省略、关系名可省略。
(a)-->(b)
(a)--(b)
(a)-[r]->(b)
(a)-[]->(b)
Neo4j基于有向无环图DAG,创建关系时必须指定方向,查找时才可省略箭头
1.2.2 关系的标签
关系标签通过":标签名"描述,关系至少要有一个标签。
(a)-[r:Lable]->(b)
(a)-[:Lable]->(b)
(a)-[r:Label1|:Label2]->(b)
创建关系时,不能一次指定多个标签,查找时才可用
关系多标签描述方式与结点相比多了个分隔符
1.2.3关系的属性
关系属性通过"{key:val}"描述。
(a)-[{cost:1}]->(b)
1.2.4 可变长度的关系
关系长度通过"*"描述,关系长度范围通过"min…max"描述;
创建关系时不能指定关系长度,查找时才可用
指定长度的关系
(a)-[*2]->(b) // 长度为2,等价于 (a)-->()-->(b)
指定长度范围的关系
(a)-[*2..4]->(b) // 长度 [2,4]
(a)-[*..4]->(b) // 长度 [0,4]
(a)-[*2..]->(b) // 长度 [2,+∞)
任意长度
(a)-[*]->(b) // 长度 [0,+∞)
1.3 路径的模式
1.3.1路径的描述
路径由一系列连接的结点和关系描述,路径名通过"p = XXX"指定;
p=(a)--(b)
p=(a)-[r]-(b)
二 匹配语句
https://www.jianshu.com/p/2bb98c81d8ee
Neo4j系列教程 :https://www.cnblogs.com/ljhdo/p/10929702.html
参考:Neo4j_MATCH详解与进阶
三 Neo4j中的函数
https://www.cnblogs.com/ljhdo/p/10919763.html
Neo4j中聚合函数在RETURN、WITH中使用,即先查找后统计,否则会报错。
MATCH (n:Blog)
where n.tags contains '电波'
return COUNT(n);:
利用函数可以对返回结果中的结点和关系进行遍历。