Neo4j的基本使用

mac2026-06-12  14

\quad Cypher是图形数据库Neo4j的查询语言,就像SQL在关系型数据库中查询一样。下面,我们简单编写 Cypher 命令创建节点和关系。Cypher 命令可以前往官方文档进行学习。

\quad 在 $ 命令行中,编写 Cypher 脚本代码,点击 Play 按钮完成创建。

基本操作

\quad 创建一个节点,并显示

CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })

\quad 查看节点

MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;

\quad 创建多个节点和关系

MATCH (ee:Person) WHERE ee.name = "Emil" CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }), (ir:Person { name: "Ian", from: "England", title: "author" }), (rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }), (ally:Person { name: "Allison", from: "California", hobby: "surfing" }), (ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir), (js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb), (ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally), (rvb)-[:KNOWS]->(ally)

\quad 查看图(所有节点)

MATCH (n:Person) RETURN n

\quad 查看关系

MATCH p=()-[r:KNOWS]->() RETURN p

\quad 模式匹配 (模式匹配用于描述要在图中寻找的内容)

MATCH (ee:Person)-[:KNOWS]-(friends) WHERE ee.name = "Emil" RETURN ee, friends

\quad 推荐 (模式匹配能用来推荐,Johan正在学冲浪,他想找一个会冲浪的新朋友)

MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer) WHERE js.name = "Johan" AND surfer.hobby = "surfing" RETURN DISTINCT surfer

\quad 分析 (如果你想了解查询是如何进行的,可以在查询语句之前加上EXPLAIN或PROFILE)

PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer) WHERE js.name = "Johan" AND surfer.hobby = "surfing" RETURN DISTINCT surfer

\quad 删除一个属性

MATCH (n:Person) REMOVE n.from RETURN n

\quad 删除节点

Match(n:Person) Detach Delete n

\quad 删除关系

match (p)-[r:KNOWS]-() detach delete r

\quad 删除所有节点和关系

MATCH (n) DETACH DELETE n

Cypher 导入CSV文件

\quad 利用 Neo4j 的 LOAD CSV WITH HEADERS FROM… 功能进行加载,具体操作过程如下。 \quad 首先将persons.csv放入neo4j-community-3.5.12/import目录下。执行代码将.csv文件导入

// 将persons.csv 导入 LOAD CSV WITH HEADERS FROM "file:///persons.csv" AS line CREATE (p:Person { id: toInteger(line.id), name: line.name })

persons.csv格式如下:

id,name 1,Charlie Sheen 2,Oliver Stone 3,Michael Douglas 4,Martin Sheen 5,Morgan Freeman

如此便导入5个Person节点,Person { id,name },属性有id和name

Neo4j 的 Python 操作

\quad 既然 Neo4j 作为一个图库数据库,那我们在项目中使用的时候,必然不能通过上面那种方式完成任务,一般都要通过代码来完成数据的持久化操作。其中,对于 Java 编程者来说,可通过Spring Data Neo4j达到这一目的。

\quad 而对于 Python 开发者来说,Py2neo 库也可以完成对 Neo4j 的操作,操作过程如下。

\quad 首先 安装 Py2neo。Py2neo 的安装过程非常简单,在命令行通过下面命令即可安装成功。

pip install py2neo

安装好之后,我们来看一下简单的图关系构建,看下面代码:

from py2neo.data import Node, Relationship a = Node("Person", name="Alice") b = Node("Person", name="Bob") a_b = Relationship(a, "KNOWS", b)

第一行代码,首先引入 Node 和 Relationship 对象,紧接着,创建 a 和 b 节点对象,最后一行匹配 a 和 b 之间的工作雇佣关系。接着来看看 ab 对象的内容是什么:

print(a_b)

通过 print 打印出 a_b 的内容:

(Alice)-[:KNOWS {}]->(Bob)

通过这样,就完成了 Alice 和 Bob 之间的工作关系,如果有多组关系将构建成 Person 之间的一个关系网。

\quad 了解更多 Py2neo 的使用方法,建议查看官方文档。

\quad 参考文献 [1]https://blog.csdn.net/weixin_41104835/article/details/88393502

最新回复(0)