neo4j 增删改查及索引操作 实战
上篇文章已成功使用docker安装并启动了neo4j服务,可以前往查看:https://blog.csdn.net/GodDavide/article/details/102636014本文记录一下neo4j的浏览器界面的增删改查及索引创建等操作以后将会学习Python使用py2neo如何操作neo4j的增删改查,提醒自己一定要学。一:增1、添加节点:emp的名称如果相同...
·
上篇文章已成功使用docker安装并启动了neo4j服务,可以前往查看:https://blog.csdn.net/GodDavide/article/details/102636014
本文记录一下neo4j的浏览器界面的增删改查及索引创建等操作
以后将会学习Python使用py2neo如何操作neo4j的增删改查,提醒自己一定要学。
-
一:增
1、添加节点:
emp的名称如果相同,是不可以多行一起执行的,所以可以根据实际需求重命名,并无影响
create(emp1:Person{name:"苏洵",age:80,sex:"男"})
create(emp2:Person{name:"苏轼",age:53,sex:"男"})
create(emp3:Person{name:"苏辙",age:51,sex:"男"})
create(emp4:Person{name:"苏小妹",age:45,sex:"女"})
create(emp5:Person{name:"苏孙",age:29,sex:"男"})
create(emp6:Person{name:"苏重孙",age:6,sex:"女"})
create(emp7:Person{name:"唐宋八大家"})
2、添加关系
需要逐句执行
match(p1:Person),(p2:Person)
where p1.name="苏洵" and p2.name = "苏轼"
create (p1) -[parent:Parent{relation:"父亲"}]-> (p2);
match(p1:Person),(p2:Person)
where p1.name="苏洵" and p2.name = "苏辙"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person),(p2:Person)
where p1.name="苏洵" and p2.name = "苏小妹"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person),(p2:Person)
where p1.name="苏轼" and p2.name = "苏孙"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person{name:"苏孙"}),(p2:Person{name:"苏重孙"})
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person{name:"苏轼"}),(p2:Person{name:"唐宋八大家"})
create (p1) -[parent:Achievement{relation:"成就"}] -> (p2);
效果:
-
二、查
1、查询所有(点击 Node 的默认命令)
MATCH (n:Person) RETURN n LIMIT 25
2、条件查询
- 节点查询
MATCH (n:Person) where n.name='苏洵' or n.age=53 RETURN n
#或
MATCH (n:Person{name:'苏洵'}),(n1:Person{age:53}) RETURN n,n1
- 关系查询
MATCH p=()-[r:Parent]->() RETURN p
# or
MATCH (a)-[r:Parent]->(b) RETURN a,r,b
#上面语句会查询所有 Node Label 的信息,可以用下面的语句查询指定 Node Label
MATCH p=(a:Person)-[r:Parent]->(b:Person) RETURN p
# or
MATCH (a:Person)-[r:Parent]->(b:Person) RETURN a,r,b
- 多级关系查询
match p = (a)-[r1:Parent]->(b)-[r2:Parent]->(c)-[r3:Parent]->(d) return p
# or
match (a)-[r1:Parent]->(b)-[r2:Parent]->(c)-[r3:Parent]->(d) return a, b, c, d
-
三、改
- Node属性更改
# 更改 “苏重孙” 为 "重孙苏"
match(n:Person) where n.name='苏重孙' set n.name="重孙苏"
- 关系类型更改
# 将 Person 节点中的 Achievement 关系类型更改为 Title
# 实际上就是新建关系,并删除旧关系的过程
MATCH (a:Person)-[r:Achievement]->(b:Person) create (a)-[r2:Title{name:"标签"}]->(b) SET r2 = r WITH r DELETE r
-
四、删
- 删除节点的属性
# 删除 Person 节点中 name 为 苏辙 的 年龄
MATCH (n:Person {name:"苏辙"}) REMOVE n.age
- 没有关系的节点删除
# 删除所有
MATCH (n:Person) delete n
# 条件删除
MATCH (n:Person) where n.name="苏重孙" delete n
- 有关系的节点删除,需要先删除关系:要删除Person点,直接执行上面代码会报错,因为Person中的每个node都存在关系,所以需要先删除关系
# 删除所有关系
MATCH (a)-[r]-(b) delete r
# 条件删除
# 删除 Person 点中,关系为 Parent 的关系
MATCH (a:Person)-[r:Parent]-(b:Person) delete r
# 然后,再按需求删除节点即可
五、索引
# 查看所有索引
:schema
# 创建索引
create index on:Person(name)
# 删除索引
drop index on:Person(name)
# 创建唯一索引
create constraint on (n:Person) assert n.name is unique
# 删除唯一索引
drop constraint on (n:Person) assert n.name is unique
更多推荐
已为社区贡献16条内容
所有评论(0)