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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章