Neo4j--登录及简单操作

发布于:2025-09-13 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、安装

      (1)  Neo4j的底层是JAVA,所以需要依赖JDK,安装任意版本的即可。    

安装之后,可以在cmd中查看,JAVA版本信息

java --version

     (2) 安装Neo4j,可以自行在网上找资源

验证安装

neo4j version

        (3)在cmd中安装Windows-service 服务,允许Neo4j服务在Windows系统后台启动

指令: neo4j windows-service install

        (4)启动服务:neo4j start

二、登录

        点击cmd中的网址进入图数据库,会提示你输入用户名和密码,默认安装的用户名和密码都是:neo4j。如果你想改密码,请自行修改。

        进去之后点击左上角的连接,连接之后就能看到节点什么之类的提示。

三、Cypher查询语言

3.1基本构建模块

(1)节点(Node):图数据库中最基本的数据单元,代表一个实体,通常用来表示人、地点、物体。是用圆括号包起来的。

(p:person)
(c:city)
(m:movie)

前面的是变量名,后面的是节点标签

(2)标签(Label):对节点进行分类的标识符,一个节点可以有多个标签,也可以没有标签。

(p:Person:Beauty {name:"alice"})  //alice是一个人,也是个美人
节点(),属性{}
p:变量名 Person:节点标签 Beauty:节点标签

(3)属性(Property):存储在节点或者关系上的键值对,用于描述具体信息。属性不能存在标签上,只能存在于节点或者关系上。

(p:Person {name:"张三",age:24,sex:"男"})

(4)关系(Relationship):连接两个节点,表示它们之间的某种关联。

(p:Person {name:"alice"}) - [r:LIVE_IN {year:2002}] -> (c:City {name:"New York"})
这个代码表示的就是Alice从2002年开始就住在纽约了
LIVE_IN指的是关系类型,一般全部大写
关系用[],它也有属性,但是也可以不写
连接:(节点) - [关系类型] -> (节点)

示例:

CREATE (p1:Person {name: "刘洋", age: 28}) - [:LIVES_IN {since: 2022}] -> (c:City {name: "深圳", country: "中国"}),(p1) - [:WORKS_AT] -> (company:Company {name: "腾讯"})

四、Cypher操作

4.1 增删改查

4.1.1增--create

(1)创建节点

create (c:City {name:"New York",population:"1000万+"})

(2)创建关系

merge (m:Major {name:"教师"}),(p:Place {name:"学校"}) create (m) - [r:RELATION {career:"工作场所"}] -> (p) return m,r,p

(3)一次性创建节点和关系

create (m:Major {name:"教师"}) - [r:RELATION {career:"工作场所"}] -> (p:Place {name:"学校"})

(4)添加标签

match (p:Place {nama:"学校"}) set p:Good return p

给学校添加了一个“好”的标签

4.1.2删--delete

(1)删除关系

删除关系,必须把这个关系找出来,在进行删除

match (m:Major {name:"教师"}) - [r:RELATION {career:"工作场所"}] -> (p:Place {name:"学校"}) delete r

(2)删除节点

删除节点,如果节点还有关系的话,删除会报错,要先把关系删掉

match (m:Major {name:"教师"}) delete m

(3)删除标签

match (p:Place:Good  {nama:"学校"}) remove p:Good return p 

(4)清空整个数据库,不要随意使用

match (n)  detach  delete  n

4.1.3改--set

修改或者添加属性

给老师添加性别:match (m:Major {name:"教师"}) set m.sex = "女" return m

修改老师的性别: match (m:Major {name:"教师"}) set m.sex="男" return m

4.1.4查--match

(1)查询所有节点

match (n) return n

(2)根据标签和属性查询节点

查询所有人:match (u:User ) return u

查询某个人:match(u:User {name:"李四"}) return u

查询满足某个添加的人:match (u:User ) where u.name="alice" and u.age=19 return u 

(3)遍历路径查询

查询Alice创办了哪些公司:

match (u:User {name:"alice"}) - [r:CEO] ->(c:company) return c.name 

查询谁创办了xx公司:

match (u:User ) -[r:CEO] ->(c:company) where c.name="xx" order by u.age return u.name limit 2

查询几条数据:desc降序

match (u:User) order by u.age desc return u limit 2

4.2 merge子句

        merge:存在即匹配,不存在即创建。

4.2.1节点操作

(1)创建或匹配单个节点

merge (u:User {name:"李四"}) return u

一次性创建多个:可以进行批量处理

unwind ['Bob','Chalie'] as name

merge (u:User {name:name}) return u.name

(2)创建时设置初始属性---on create set

merge (u:User {name:"alice"}) on create set u.age=32, u.sex="female" return u

(3)匹配时更新属性---on match set

merge (u:User {name:"alice"}) on match set u.age=35 return u

4.2.2关系和路径操作

(1)创建或者匹配整个路径

merge  (u:User {name:"Bob,age=12"}) - [r:F {role:"创始人"}] -> (c:Company {name:"BOB"}) return u,r,c

(2)先匹配节点再创建关系

match (u:User {name:"Bob"}),(c:Company name:"BOB")  merge(u) -[r:F] -> (c)  on create set r.role="创始人" return p,r,c

4.2.3批量操作

(1)批量创建多个节点

UNWIND ["张三","李四","王五"] AS name MERGE (p:Person {name:name}) RETURN p.name

(2)批量更新多个节点的属性

UNWIND [{name:"张三",com:"1"},{name:"李四",com:"2"}] AS person_data MERGE (p:Person {name:person_data.name}) ON MATCH SET p.com=person_data.com RETURN p

(3)批量创建关系

多个人物有相同的关系就可以进行批量处理

MATCH (c:com {name:"1"}) UNWIND ["张三","张四","张五"] AS data_name MERGE (p:Person {name:data_name}) MERGE (p) - [r:WORK] -> (c) RETURN p,r

4.3 约束

作用:用于保证数据的唯一性和完整性,Neo4j会自动维护约束相关索引。

(1)节点属性唯一性约束

批量添加属性id:

uniwind ["Alice","Bob"] as name
merge (p:person {name:name})
set p.id = randomUUID()

创建唯一性id:

create constraint unique_person_id if not exists
for (p:person)
require p.id is unique

验证约束:

create (:person {id:"id号",name:"Bob"}) 

(2)节点属性存在性约束

确保节点都拥有这个属性
create constraint person_name_exists if not exists
for (p:person)
require p.name is not null

验证
create (:person {name:"玛丽",age:19})

(3)查看和删除约束

查看约束:show constraints

删除约束:drop constraint unique_person_id if exists

4.4 索引

索引:用于加速查询性能,特别是基于属性的查找

(1)单属性索引

create index person_name_index if not exists
for (p:person)
on (p.name)

(2)复合索引

create index person_name_age_index if not exists
for (p:person)
on (p.name,p.age)

(3)全文索引

定义全文索引
create fulltext index personfulltextindex
for (n:person|company)
on each [n.name,n.age,n.id]


查询全文索引
call db.index.fulltext.queryNodes("personfulltextindex","XIAO")
yield node,score
return node.name,node.description,score
order by score desc

(4)查看和删除索引

查看索引
show indexes


删除索引
drop index person_name_index if exists



删除全文索引
call db.index.fulltext.drop("personfulltextindex")

4.5 数据库备份

(1)备份---dump

进行备份前要停止neo4j服务 :neo4j stop

提取设定好备份文件夹,最好还是不要有中文:  

neo4j-admin database dump neo4j --to-path=D:\Neo4jbeifen

(2)完全的删除数据库(删除图数据库中的属性键名,这意味成着完全删除,不留一点痕迹)

1 .删除 安装目录下的\data\databases 目录下neo4j文件夹

2 .删除 安装目录下的\data\transactions 目录下neo4j文件夹

(3)导入---load

进行操作之前一样需要关闭访问:neo4j stop

将保存的数据导回去:neo4j-admin database load neo4j --from-path=D:\Neo4jbeifen

查看:neo4j start

五、LangChain连接Neo4j

下载相关库:

pip install neo4j -i https://mirrors.aliyun.com/pypi/simple/

pip install -U langchain-neo4j -i https://mirrors.aliyun.com/pypi/simple/

链接数据库:

# 导入操作使用到的包
from langchain_neo4j import Neo4jGraph
url ="bolt://localhost:7687"
username="neo4j"
password="12345678"
data_base = "neo4j"
graph = Neo4jGraph(url=url, username=username, password=password, database=data_base)
print("连接成功")

这里要下载neo4j软件的一个配件,配置好图数据库。电脑系统名必须是英文或数字,中文配不来一点。

六、小结

学习了neo4j的基本操作,查看了图数据库的形式。后续作用较大。


网站公告

今日签到

点亮在社区的每一天
去签到