neo4j 增删改查及索引操作 实战

上篇文章已成功使用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
发布了73 篇原创文章 · 获赞 188 · 访问量 118万+

猜你喜欢

转载自blog.csdn.net/GodDavide/article/details/102636364