neo4j学习

本文详细介绍了Neo4j图数据库的基本操作,包括如何删除和创建节点、设置节点属性、建立关系及关系属性。同时,展示了如何使用Python的py2neo库进行连接、创建节点和关系、更新属性、查找节点以及删除操作。内容涵盖了图数据库的基础操作和Python集成的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、neo4j语法操作

1、首先,我们删除数据库中以往的图,(确保一个空白的环境进行操作):

MATCH (n) DETACH DELETE n

MATCH是匹配操作,而小括号()代表一个节点node(可理解为括号类似一个圆形),括号里面的n为标识符。

2、我们创建一个课程节点:

CREATE (n:Class {name:'大学英语Ⅱ'}) RETURN n

CREATE是创建操作,Class是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典。这条语句的含义就是创建一个标签为Class的节点,该节点具有一个name属性,属性值是大学英语Ⅱ。

在这里插入图片描述

3、我们继续来创建更多的课程节点,并分别命名:

CREATE (n1:Class {name:'大学英语Ⅱ'}) 
CREATE (n2:Class {name:'大学英语Ⅲ'}) 
CREATE (n3:Class {name:'大学英语Ⅳ'}) 
RETURN n1,n2,n3

在这里插入图片描述

4、接下来创建专业节点

CREATE (m1:profession {name:'计算机专业'})
CREATE (m2:profession {name:'软件工程'})
CREATE (m3:profession {name:'大数据'})
CREATE (m4:profession {name:'信管'})
RETURN m1,m2,m3,m4

在这里插入图片描述

5、接下来创建关系

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n1)-[r:BASIC]->(n2)
RETURN n1, n2

在这里插入图片描述

6、关系也可以增加属性

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n1)-[r:BASIC {since:2021}]->(n2)
RETURN n1, n2

7、接下来增加更多的关系

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n3:Class {name:'大英Ⅳ'}) 
CREATE (n1)-[r1:BASIC]->(n2)
CREATE (n2)-[r2:BASIC]->(n3)
RETURN n1, n2,n3

也可以在创建节点的时候建立关系,如例子:CREATE (a:Person {name:'Todd'})-[r:FRIENDS]->(b:Person {name:'Carlos'})

在这里插入图片描述

8、然后,我们需要建立不同类型节点之间的关系-课程和专业的关系

CREATE (n1:class {name: "大英Ⅱ"}) 
CREATE (n2:class {name: "大英Ⅲ"}) 
CREATE (n3:Class {name:'大英Ⅳ'}) 
CREATE (m1:profession {name:'计算机专业'})
CREATE (m2:profession {name:'软件工程'})
CREATE (m3:profession {name:'大数据'})
CREATE (m4:profession {name:'信管'})
CREATE (n1)-[r1:BASIC]->(n2)
CREATE (n2)-[r2:BASIC]->(n3)
CREATE (m1)-[r3:REQUIRE]->(n1)
CREATE (m2)-[r4:REQUIRE]->(n1)
CREATE (m3)-[r5:REQUIRE]->(n1)
CREATE (m4)-[r6:REQUIRE]->(n1)
RETURN n1, n2,n3,m1,m2,m3,m4

在这里插入图片描述

二、python操作neo4j

二:python操作neo4j的实现

python中neo4j的操作可以利用驱动包或者py2neo包,

我采用py2neo第三方包实现以下简单功能,先建立一个neo4j的链接

对于neo4j的安装其实比较简单,这里就跳过

def__init__(self):

self.conn = Graph("http://localhost:7474",username="11111",password="11111")

节点和关系的创建

a = Node(label, **doc1)

b = Node(label, **doc2)

r2 = Relationship(b, ship, a)

self.conn.merge(r2,label=label)

更新节点属性

node.update(doc)

通过关系查找相关联的关系节点

selector = NodeSelector(self.conn)

query = '_.age=22'

persons = selector.select(label).where(query).order_by('_.' + order)

添加节点

obj = self.get(label, field, value)

tmp_obj = label()

tmp_obj.setAll(doc=doc)

obj.knows.add(tmp_obj)

print(list(obj.knows))

self.conn.push(obj)

删除节点,这里有坑,官方文档说删除节点必须先删除关系。当节点大于2时,比如a->b->c 这时官方文档中的栗子有报错。因此自己现在用这种方式删除

obj = self.get(label, src_field, src_value)

tar = self.get(label, desc_field, desc_value)

obj.knows.remove(tar)

self.conn.push(obj)

self.conn.delete(tar)

### 关于 Neo4j学习资料、教程、示例和报告 #### 一、Spring Data Neo4j 集成开发 Spring Data Neo4j 是一个强大的工具,用于简化在 Spring 应用程序中对 Neo4j 图数据库的数据访问操作。通过该框架,开发者能够以 JPA 风格的方式定义实体类及其关系,并将其映射到 Neo4j 中的节点和边[^1]。这种集成方式使得开发者无需手动编写复杂的 Cypher 查询语句即可完成大部分 CRUD 操作。 对于初学者而言,在构建项目时建议选择较低版本的 Spring Boot(如 2.3.5),以便与现有文档保持一致[^2]。随着技术的发展,未来可能需要适应更高版本中的变化。 #### 二、Neo4j 安装配置指南 为了顺利开展实践练习,首先需正确安装并运行本地实例。以下是具体步骤概述: 1. **下载软件包** 访问官方站点获取对应平台的支持文件;注意 JDK 版本兼容性问题——当选用 v4.x 及以上系列时至少要求 Java SE Development Kit 11 或更高级别[^3]。 2. **初始化环境** 解压缩后进入 `bin` 文件夹路径下执行命令行脚本来部署后台进程以及激活前端界面入口点 (`http://localhost:7474`) 登录验证默认凭证组合为用户名:"neo4j", 初始密码同样设置成了 "neo4j". 不过首次连接成功以后强制更改初始口令安全策略生效. #### 三、Cypher 基础教学概览 作为专用领域特定语言(DSL),Cypher 提供了一种简洁优雅的方式来表达复杂模式匹配需求。下面给出几个基础例子帮助理解其工作原理: - 创建两个简单的人员对象并通过指定属性建立关联关系: ```cypher CREATE (alice:Person { name:'Alice', age:30 }) CREATE (bob:Person { name:'Bob', age:28 }) MATCH (a:Person),(b:Person) WHERE a.name='Alice' AND b.name='Bob' CREATE (a)-[r:FRIEND_OF]->(b); RETURN type(r), r; ``` 此片段展示了如何利用 MATCH 子句定位目标记录集,接着运用 CREATE 动作新增一条指向型态的关系链路[FRIEND_OF]. 另外还有更多进阶功能等待探索比如聚合函数计算统计指标或者全文检索支持等等[^4]. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值