1、非字母或空格类型关系可以用“`”(1左边的)引号引起来,如
Create (m)-[:`TYPE WITH SPACE`]->(n)
2、当需要匹配多种关系中的一种时,可以通过竖线(|)连接起来
Match (m:Movie)-[:ACTED_IN|DIRECTED]-(n:Person{name:’Tom’})
3、可变长关系和固定长度关系:-[:TYPE*minHops..maxHops]->,-[:TYPE*fixHops]->,如
MATCH p= (n:Person{name:'Tom Cruise'})-[*1..3]-(m:Movie) RETURN p,所有1到3跳关系。
MATCH p= (n:Person{name:'Tom Cruise'})-[:ACTED_IN*1..3]-(m:Movie) RETURN p,所有ACTED_IN关系的1到3跳关系。
4、参数
5、属性存在性检查,MATCH (n:Person{name:'Tom Cruise'}) where exists(n.born) return n
6、字符串匹配,STARTS WITH、ENDS WITH、CONTAINS,NOT如
MATCH (n:Person) where n.name starts with 'Tom' return n,
MATCH (n:Person) where not n.name starts with 'Tom' return n
7、正则表达式,~‘regexp’,(?i)不区分大小写,如MATCH (n:Person) where n.name=~'(?i)Tom.*' return n,通样’/’用转义字符’\\/’
8、列表,MATCH (n:Person) where n.name in ['Tom Cruise','Tom Hanks'] return n
9、聚合函数:count,avg,sum,min,max,collect(放入一个列表),distinct,percentileDisc、percentileCont(百分位),stdev、stdevp(标准偏差)
10、load csv,csv文件可以存在数据库服务器上,通过file:///url访问,也可以通过http、HTTPS和ftp来访问csv文件,using perodic commit 默认每次导入1000行,以防内存不够。没有文件头的USING PERIODIC COMMIT
LOAD CSV FROM "file:///attack/attack_mitigation.csv" AS line
merge (a:AttackMitigation{name: line[1] }) set a.id=line[2],包含文件头的USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///attack/attack_mitigation.csv" AS line
merge (a:AttackMitigation{name: line.name }) set a.id=line.id, a.external_references=line.external_references,a.description=line.description
11、set语句,set可以设置属性,设置标签。
:params p:{name: 'Stella', age: 24}
Match (n:Person{name:’Andres’}) set n=$p return n
Match (n{name:’Andres’}) set n:German return n
12、delete用于删除图元素(节点、关系或路径)
Remove 用于删除图元素的属性和标签,Match (n{name:’Andres’}) remove n:German return n
13、排序,order by n.age (desc)
14、限制输出行数,limit 3,返回开始部分
15、跳过一部分,skip 3
16、unwind,将一个列表展开为一个列的序列
Unwind [1,2,3] as x return x
17、call语句用于调用数据库中的函数
18、函数
- 断言Predicate函数(all(),any(), none(), single(), exists()),
- 标量Scalar函数(size(), length(), type(), id(), coalesce()第一个非空值, head()列表中第一个元素, last()列表中最后一个元素, timestamp(), 与1970年1月1日午夜差值毫秒计, startNode(), endNode(), properties(), toInt(), toFloat()),
- 列表List函数(nodes(), relationships(), labels(), keys(), filter(), tail(), range(), reduce()),
- 数学函数(数值函数abs(), ceil(), floor(), round(), sign(), rand(), 对数函数log(), log10(), 指数函数exp(), e(), sqrt(), 三角函数sin(), cos(), tan(), cot(), asin(), acos(), atan(), atan2(), pi(), degrees(), radians() haversin() )
- 字符串函数(replace(),substring(), left(), right(), ltrim(), rtrim(), trim(), lower(), upper(), split(), reverse(), toString())
- 自定义函数
19. 模式:索引(创建索引、删除索引)和约束
20.更改节点标签名:MATCH (n:OLD_LABEL) REMOVE n:OLD_LABEL SET n:NEW_LABEL
21. 删除重复节点:
MATCH (n:Input)
WITH n.inputID AS inputID, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DETACH DELETE n)
22.删除大规模节点而内存不溢出:MATCH (n:CPE23) with n LIMIT 1000000 detach DELETE n RETURN count(*);