本教程一共分为7个小教程专为零基础小白设计,从概念到实战,带你轻松入门!

📁 资源福利:教程代码+数据集+工具安装包,私信领取!

【解决毕设的最后一公里】基于知识图谱的智能问答系统教程实战三----Neo4j增删改查【Django+neo4j+大模型】

前言

neo4j是一个非关系型数据库,用来保存关系复杂的数据,并且具有相比于关系型数据更高效、更快的特点。neo4j还有个重要特点是其完整的AICD。(tips:AICD指的是原子性 (Atomicity) :一个事务里所有操作均完成才算完成、独立性 (Isolation):并发的事务相互不影响 、一致性(Consistency) :事务发生前后,数据库保持一致、持久性(Durability) :一旦操作提交,将永远保存在数据库里

2.1 增

2.1.1 CREATE创建节点

语法:

• 通过CREATE创建一个节点
• () 代表一个节点
• 节点包括标示符和标签label
• {} 包含了属性如果想返回创建的数据,需要指定标示符  即:return 标示符;
创建多个节点数据,多个元素间用逗号或者用create分开
  • 创建一个无属性节点:
Create (r1:Rapper) return r1;
  • 生成有属性的节点:
Create (r2:Rapper{name:"Pharaoh",Team:"Walkingdead"}) return r2;
  • 一次创造多个节点(多节点之间用Create隔离):
Create (r3:Rapper{name:"KeyNG",Team:"Walkingdead",award:"champion"})  
Create (r4:Rapper{name:"GAI",Team:"GOSH",award:"champion"})
  • 创建一个有多个标签的节点:
Create (r5:Rapper:Producer:Composer{name:"Cloud"})

2.1.2 merge创建节点

语法:

MERGE (<节点或关系的名称>:<节点或关系的标签名称>
{
   <节点或关系的属性名称>:<节点或关系的属性值>
   .....
     <节点或关系的属性名称>:<节点或关系的属性值>
})
merge(:Basketballplayer{name:"Love"})

注:MERGE命令在图中搜索给定模式,如果存在,则返回结果;如果它不存在于图中,则它创建新的节点/关系并返回结果。create可以创建相同节点,但是merge不能创建相同节点。

merge 先进行match,若成功match到,则不进行创建;反之则创建新的节点

2.1.3 create创建节点关系

语法(关系也类似节点也是有标签的,也是有有属性无属性两类):

> 表示一个有指向的关系
[] 能够添加标示符,属性,类型等信息
关系也是有标签的,有属性的。
先用”match(标示符:标签)“匹配到才能创建关系
  • 创建无属性的指向关系:
match(r3:Rapper{name:"KeyNG"}),(r4:Rapper{name:"GAI"})
create(r3)-[:队友]->(r4)
  • 创建有属性的关系:
match(r2:Rapper{name:"Pharaoh"}),(r3:Rapper{name:"KeyNG"})
create(r2)-[:队友{时间:"2018年夏",共属的团队:"Walkingdead"}]->(r3)
  • 创建新节点及新关系:
Create (r6:Rapper{name:"Buzzy",Team:"Walkingdead"})-[:存在意见不合{时间:"2017年末"}]->(r7:Rapper{name:"Masiwei",Team:"Higherbrother"})

2.2 删

先创建一个节点

Create(r:Rapper{name:"6ix9ine",Team:"Blood"})

2.2.1 删除一个节点

  • 通过 name 属性删除节点
MATCH(r:Rapper{name:"6ix9ine"})
delete r
  • 通过id属性删除节点
MATCH (r)
WHERE id(r) = 84
DELETE r

2.2.2 删除一个节点及其所有的关系

MATCH (r)
WHERE id(r) = 83
DETACH DELETE r

2.2.3 删除一个标签下的所有节点与关系

MATCH (r:Loc)
DETACH DELETE r

2.2.4 删除所有节点与关系

MATCH (r)
DETACH DELETE r

2.3 改

2.3.1 SET:向现有节点或关系添加新属性

  • 向现有的节点添加和更新属性

创建一个节点,我们来更新他的Team属性并添加一个award属性

Create (:Basketballplayer{name:"LeBron",Team:"Cavaliers",AKA:"King"})

更新Team属性

match(b:Basketballplayer{name:"LeBron"})
set b.Team="Heat"
return b

添加一个award属性

match(b:Basketballplayer{name:"LeBron"})
set b.award="3 chmpions"
return b
  • 向现有的关系添加和更新属性

已建立队友关系,添加关系属性-发生的时间,修改关系-共属的团队

  1. 建立关系
create(r1:Rapper{name:"Buzzy"}) -[:`队友`{`共属的团队`:"Walkingdead"}]->(r2:Rapper{name:"KeyNG"})
  1. 添加属性
match p=(:Rapper{name:"Buzzy"})-[r]->(:Rapper{name:"KeyNG"})
set r.`时间`="2018年夏"
return p
  1. 更改属性
match p=(:Rapper{name:"Buzzy"})-[r]->(:Rapper{name:"KeyNG"})
set r.`共属的团队`="Wokenday"
return p

2.3.2 REMOVE:来删除节点或关系的现有属性

  DELETE和REMOVE命令的**主要区别**:
  1. DELETE用于删除节点和它们的关联关系
  2. REMOVE命令用于删除节点、关系的标签、删除节点、关系的属性
  • 删除节点的属性

先创建一个节点

Create (:Basketballplayer{name:"George",Team:"Clipper",score:"89"})
match(b:Basketballplayer{name:"George"})
remove b.Team
return b
  • remove关系的属性

先建立如下关系

create (:Singer{name:"Jay Chou"})-[:`合作`{`合作作品`:"歌曲 天地一斗"}]->(:Basketballplayer:{name:"Kobe",Team:"Lakers"})
match p= (:Singer)-[r]->(:Basketballplayer)
remove r.`合作作品`
return p
  • 删除节点的标签

语法:

match 节点a
remove 节点a:标签
return a

建立多属性节点m

create (m:Movie:Cinema:Picture)

删除m的Picture标签

MATCH (m:Movie) 
REMOVE m:Picture
return m

2.4 查

2.4.1 match

语法:

MATCH 
(
   <node-name>:<label-name>
)
  • 查找节点:

(因为标签为Rapper的节点很多,因此需要加上要查找节点独特的属性方能准确查找出来)可在table里面看到其所有属性

MATCH (r2:Rapper{name:"Pharaoh"})
RETURN r2
  • 查找节点的属性
MATCH (r2:Rapper{name:"Pharaoh"})
RETURN r2.Team
  • 查找节点的所有关系

查找时可缺省标示符仅用标签和节点属性进行查找

MATCH p = (:Rapper{name:'Buzzy'})-[]->()
RETURN p

2.4.2 where

where语句是用来筛选节点或关系的

  • 查找结点

方法1:

match (n)
where n.name="GAI"
return n

方法2:

match (r:Rapper)
where r.name="GAI"
return r

注:命令1是遍历所有之后,才根据条件name='小黄’筛选出来的,当节点过多的时候,建议采用命令2去查找,有label这个设定之后,遍历的节点范围会有所缩小,速度会更快一些,所占用内存空间也会减少。

  • 查找多个结点
match (r:Rapper)
where r.name='GAI' or r.name='Pharaoh'
return r

注:查找用的是or不是and

  • 筛选关系
match p= (r:Rapper)-[r]->(r1:Rapper)
where r.relationship="制作"
return p
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐