Neo4j 全网最详细教程

Neo4j的语法(3.5版本)

1.公式模式是语法范式
2.代码模式是实例,可按顺序复制执行
3.涉及所有可能的节点、节点类型、属性,关系,关系类型、属性的增删改查
4.学习本教程之后可以学习
neo4j建模规范和思想:Neo4j数据建模教程
python对neo4j的api接口框架py2neo进阶教程:py2neo框架学习全网最详细教程

1.节点规则

节点 = ( 代表元 : 节点类别 { 属性 1 : 属性值 1 , 属性 2 : 属性值 2 } ) 节点=(代表元:节点类别\{属性1:属性值1,属性2:属性值2\}) 节点=(代表元:节点类别{属性1:属性值1,属性2:属性值2})

(n:Person{name:'Tony'})
(n:Person{name:'Tom', age:45, hight:175})  
(n:Address{address:'guangdong'})

2.关系规则

关系 = [ 代表元 : 关系类型 { 属性 : 属性值 } ] 关系=[代表元:关系类型\{属性:属性值\}] 关系=[代表元:关系类型{属性:属性值}]

[r:Friend{value:90}]
[r:Live]
[r:transAccounts{cash:800,data:'2022-04-06'}]       

3.语法

一、增

i)增加节点

c r e a t e 节点 create\quad 节点 create节点

create (n:Person{name:'Tony'})
create (m:Person{name:'Tom', age:45, hight:175})         
create (k:address{name:'guangdong'})

ii)一个节点增加标签

m a t c h 节点 s e t 节点 : 新标签 match \quad 节点 \quad set \quad 节点:新标签 match节点set节点:新标签

MATCH (n:Person{name:'Tom'}) 
SET n:Suspect

iii)增加关系

a 从已有节点添加关系

c r e a t e 节点 1 , 节点 2 m e r g e 节点 1 − 关系 − > 节点 2 create \quad 节点1,节点2 \quad merge \quad 节点1-关系->节点2 create节点1,节点2merge节点1关系>节点2

match (n:Person{name:'Tony'}),(m:Person{name:'Tom'})
merge (n)-[:Friend{value:90}]->(m)

match (n:Person{name:'Tony'}),(m:address{name:'guangdong'})
merge (n)-[:Live]->(m)                
b 新建节点添加关系

c r e a t e 节点 1 − 关系 − > 节点 2 create \quad 节点1-关系->节点2 create节点1关系>节点2

create (n:Person{name:'Sandy'})-[:Friend{value:90}]->(m:Person{name:'Jenny'})
create (x:Person{name:'Peter'})-[:Live]->(y:address{name:'hubei'})          
c 部分节点已存在

m a t c h 节点 1 m e r g e 节点 1 − 关系 − > 节点 2 match \quad 节点1 \quad merge \quad 节点1-关系->节点2 match节点1merge节点1关系>节点2

match (n:Person{name:'Tony'})
create (n)-[:Friend{value:90}]->(m:Person{name:'Jack'})
       
match (m:address{name:'guangdong'})                                           
create (n:Person{name:'Danny'}) -[:Live]-> (m)      

iv)增加属性

a 添加节点属性

m a t c h 节点 1 s e t 节点 1. 属性名 1 match \quad 节点1 \quad set \quad 节点1.属性名1 match节点1set节点1.属性名1

match (n:Person{name:'Tony'}) set n.age=45
match (n:Person{name:'Tony'}) set n.hight=180
b 增加关系的属性

m a t c h 关系 1 s e t 节点 1. 属性名 1 match \quad 关系1 \quad set \quad 节点1.属性名1 match关系1set节点1.属性名1

match (n:Person{name:'Tony'})-[r:Friend]-(m:Person{name:'Tom'}) set r.value=45

二、删

i)删除节点

a)方式一:确保该节点连接的关系全部删除

m a t c h ( n ) − [ h ] − > 节点 d e l e t e h m a t c h 节点 − [ r ] − > ( n ) d e l e t e r m a t c h 节点 d e l e t e 节点 match\quad (n)-[h]->节点 \quad delete\quad h\\match\quad 节点-[r]->(n) \quad delete\quad r\\match \quad 节点 \quad delete \quad 节点 match(n)[h]>节点deletehmatch节点[r]>(n)deletermatch节点delete节点

match (n:Person{name:'Peter'})-[h]->(m) delete h;
match (m)-[r]->(n:Person{name:'Peter'}) delete r;
match (n:Person{name:'Peter'}) delete (n)
b)方式二:删除节点同时,解放所有关系

m a t c h ( n ) − [ h ] − > ( m ) d e t a c h d e l e t e m match \quad (n)-[h]->(m) \quad detach \quad delete \quad m match(n)[h]>(m)detachdeletem

match (n:Person{name:'Jenny'}) detach delete n

ii)删除关系

m a t c h ( n ) − [ h ] − > 节点 d e l e t e h match\quad (n)-[h]->节点 \quad delete\quad h match(n)[h]>节点deleteh

match (n:Person{name:'Danny'})-[h]->(m) delete h;

iii)删除属性

m a t c h 节点 1 r e m o v e 节点 1. 属性名 match \quad 节点1 \quad remove \quad 节点1.属性名 match节点1remove节点1.属性名

match (n:Person{name:'Tony'}) remove n.age

三、改

i)修改属性

a)修改节点属性

m a t c h 节点 1 s e t 节点 1. n a m e = 新名字 m a t c h 节点 2 s e t 节点 2. 属性名 1 = 属性值 match \quad 节点1 \quad set \quad 节点1.name=新名字\\match \quad 节点2 \quad set \quad 节点2.属性名1=属性值 match节点1set节点1.name=新名字match节点2set节点2.属性名1=属性值

match (n:Person{name:'Jack'}) set n.name='Jacky'
match (m:Person{name:'Tony'}) set m.hight=160
b)修改关系属性

m a t c h 节点 1 − 关系 − > 节点 2 s e t 关系 . 属性名 = 属性值 match \quad 节点1-关系->节点2 \quad set\quad 关系.属性名=属性值 match节点1关系>节点2set关系.属性名=属性值

match (n:Person{name:'Tony'})-[r]->(m:Person{name:'Tom'}) set r.value=100

ii)修改节点(标签)

m a t c h 节点 1 r e m o v e 节点 1 : 节点类别 s e t 节点 1 : 新节点类别 match \quad 节点1 \quad remove \quad 节点1:节点类别\quad set\quad 节点1:新节点类别 match节点1remove节点1:节点类别set节点1:新节点类别

MATCH (n:Person{name:'Sandy'}) 
REMOVE n:Person 
SET n:Suspect

iii)修改关系

MATCH (n:Person{name:'Tony'})-[r:Friend]->(m:Person{name:'Tom'})
CREATE (n)-[r2:Couple]->(m)
SET r2 = r // 这里是复制属性
WITH r
DELETE r

四、查

i)查询节点

m a t c h 节点 r e t u r n 节点 match \quad 节点\quad return \quad 节点 match节点return节点

match (n:Person{name:'Tony'}) return n

ii)查询关系

m a t c h 节点 1 − 关系 − > 节点 2 r e t u r n 关系 match \quad 节点1-关系->节点2 \quad return \quad 关系 match节点1关系>节点2return关系

match (n:Person{name:'Tony'})-[r]->(m) return r

iii)查询属性

a)查询节点属性

m a t c h 节点 r e t u r n 节点 . 属性名 1 match \quad 节点\quad return \quad 节点.属性名1 match节点return节点.属性名1

match (n:Person{name:'Tony'}) return n.age
b)查询关系属性

m a t c h 节点 1 − 关系 − > 节点 2 r e t u r n 关系 . 属性名 match \quad 节点1-关系->节点2 \quad return \quad 关系.属性名 match节点1关系>节点2return关系.属性名

match (n:Person{name:'Tony'})-[r]->(m:Person{name:'Tom'}) return r.value

你可能感兴趣的:(知识图谱,neo4j,python,知识图谱)