Neo4j 安装、使用教程

article/2025/9/15 18:16:40

文章目录

      • 一、Neo4j 的安装与配置
        • 1、安装JDK
        • 2、安装Neo4j
        • 3、Neo4j环境变量配置
        • 4、启动服务器
      • 二、Neo4j 使用教程

一、Neo4j 的安装与配置

1、安装JDK

由于Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。配置 JDK环境,为以后能适应Springboot,请选择最低JDK1.8的环境。

2、安装Neo4j

下载地址:https://neo4j.com/download-center
我安装的是 Neo4j Community Edition 3.5.30,

若安装Neo4j 4.x 版本,需使用 jdk11

解压后的文件夹内容如图:
在这里插入图片描述

其中主要目录结构有
1、bin目录:用于存储Neo4j的可执行程序;
2、conf目录:用于控制Neo4j启动的配置文件;
3、data目录:用于存储核心数据库文件;
4、plugins目录:用于存储Neo4j的插件;

3、Neo4j环境变量配置

此电脑——>右键“属性”——>高级系统设置——>环境变量
设置主目录环境变量,在系统变量下,新建一个系统变量。

变量名 = NEO4J_HOME
变量值 = E:\Neo4j\neo4j-community-3.5.3 (这里设置为你自己的Neo4j主目录)

在这里插入图片描述
设置好后,点击确定。再找到你的系统变量Path(原先设置JDK时用到的)。新建一个值:%NEO4J_HOME%\bin
在这里插入图片描述

4、启动服务器

通过使用neo4j.bat文件启动服务器,该文件存放在主目录的bin文件夹中
在cmd中,输入neo4j.bat console并回车在这里插入图片描述
现在可以通过浏览器输入 http://localhost:7474/ ,访问服务器。初始的用户名和密码均是neo4j,输入密码,点击connect, 初次使用系统还会要求你改密码,到时候输入新密码即可。

二、Neo4j 使用教程

1、创建一个人物节点
CREATE (n:Person {name:'John'}) RETURN n

CREATE是创建操作,Person是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典。这条语句的含义就是创建一个标签为Person的节点,该节点具有一个name属性,属性值是John。
在这里插入图片描述
2、继续来创建更多的人物节点,并分别命名

CREATE (n:Person {name:'Sally'}) RETURN n;
CREATE (n:Person {name:'Steve'}) RETURN n;
CREATE (n:Person {name:'Mike'}) RETURN n;
CREATE (n:Person {name:'Liz'}) RETURN n;
CREATE (n:Person {name:'Shawn'}) RETURN n;

在这里插入图片描述
3、创建地区节点

CREATE (n:Location {city:'Miami', state:'FL'});
CREATE (n:Location {city:'Boston', state:'MA'});
CREATE (n:Location {city:'Lynn', state:'MA'});
CREATE (n:Location {city:'Portland', state:'ME'});
CREATE (n:Location {city:'San Francisco', state:'CA'});![在这里插入图片描述](https://img-blog.csdnimg.cn/412494160edb421b86b1d03a03c2e9ae.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2O55KD,size_20,color_FFFFFF,t_70,g_se,x_16)

在这里插入图片描述
如图所示,共有6个人物节点、5个地区节点,Neo4J贴心地使用不用的颜色来表示不同类型的节点。

4、接下来创建关系

MATCH (a:Person {name:'Liz'}), (b:Person {name:'Mike'}) 
MERGE (a)-[:FRIENDS]->(b)

这里的方括号[]即为关系,FRIENDS为关系的类型。注意这里的箭头 -->是有方向的,表示是从a到b的关系。 如图,Liz和Mike之间建立了FRIENDS关系,通过Neo4J的可视化很明显的可以看出:
在这里插入图片描述

5、关系也可以增加属性

MATCH (a:Person {name:'Shawn'}), (b:Person {name:'Sally'}) 
MERGE (a)-[:FRIENDS {since:2001}]->(b)

在这里插入图片描述
在关系中,同样的使用花括号{}来增加关系的属性,也是类似Python的字典,这里给FRIENDS关系增加了since属性,属性值为2001,表示他们建立朋友关系的时间。

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

MATCH (a:Person {name:'Shawn'}), (b:Person {name:'John'}) MERGE (a)-[:FRIENDS {since:2012}]->(b);
MATCH (a:Person {name:'Mike'}), (b:Person {name:'Shawn'}) MERGE (a)-[:FRIENDS {since:2006}]->(b);
MATCH (a:Person {name:'Sally'}), (b:Person {name:'Steve'}) MERGE (a)-[:FRIENDS {since:2006}]->(b);
MATCH (a:Person {name:'Liz'}), (b:Person {name:'John'}) MERGE (a)-[:MARRIED {since:1998}]->(b);

在这里插入图片描述
7、然后,建立不同类型节点之间的关系-人物和地点的关系

MATCH (a:Person {name:'John'}), (b:Location {city:'Boston'}) MERGE (a)-[:BORN_IN {year:1978}]->(b)

这里的关系是BORN_IN,表示出生地,同样有一个属性,表示出生年份。

如图,在人物节点和地区节点之间,人物出生地关系已建立好。
在这里插入图片描述
8、同样建立更多人的出生地

MATCH (a:Person {name:'Liz'}), (b:Location {city:'Boston'}) MERGE (a)-[:BORN_IN {year:1981}]->(b);
MATCH (a:Person {name:'Mike'}), (b:Location {city:'San Francisco'}) MERGE (a)-[:BORN_IN {year:1960}]->(b);
MATCH (a:Person {name:'Shawn'}), (b:Location {city:'Miami'}) MERGE (a)-[:BORN_IN {year:1960}]->(b);
MATCH (a:Person {name:'Steve'}), (b:Location {city:'Lynn'}) MERGE (a)-[:BORN_IN {year:1970}]->(b);

在这里插入图片描述
9、至此,知识图谱的数据已经插入完毕,可以开始做查询了。

我们查询下所有在Boston出生的人物

MATCH (a:Person)-[:BORN_IN]->(b:Location {city:'Boston'}) RETURN a,b

在这里插入图片描述
10、查询所有对外有关系的节点

MATCH (a)-->() RETURN a

注意这里箭头的方向,返回结果不含任何地区节点,因为地区并没有指向其他节点(只是被指向)
在这里插入图片描述
11、查询所有有关系的节点

MATCH (a)--() RETURN a

在这里插入图片描述
12、查询所有对外有关系的节点,以及关系类型

MATCH (a)-[r]->() RETURN a.name, type(r)

在这里插入图片描述
13、查询所有有结婚关系的节点

MATCH (n)-[:MARRIED]-() RETURN n

在这里插入图片描述
14、创建节点的时候就建好关系

CREATE (a:Person {name:'Todd'})-[r:FRIENDS]->(b:Person {name:'Carlos'})

在这里插入图片描述
15、查找某人的朋友的朋友

MATCH (a:Person {name:'Mike'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName

返回Mike的朋友的朋友:
在这里插入图片描述
16、增加/修改节点的属性

MATCH (a:Person {name:'Liz'}) SET a.age=34;
MATCH (a:Person {name:'Shawn'}) SET a.age=32;
MATCH (a:Person {name:'John'}) SET a.age=44;
MATCH (a:Person {name:'Mike'}) SET a.age=25;

这里,SET表示修改操作
在这里插入图片描述
17、删除节点的属性

MATCH (a:Person {name:'Mike'}) SET a.test='test'
MATCH (a:Person {name:'Mike'}) REMOVE a.test

删除属性操作主要通过 REMOVE

18、删除节点

MATCH (a:Location {city:'Portland'}) DELETE a

除节点操作是 DELETE

19、删除有关系的节点

MATCH (a:Person {name:'Todd'})-[rel]-(b:Person) DELETE a,b,rel

20、删除数据库中的图

MATCH (n) DETACH DELETE n

在这里插入图片描述

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


http://chatgpt.dhexx.cn/article/vyosdVqF.shtml

相关文章

neo4j新手教程

neo4j新手教程 本文通过一个实际的案例来一步一步使用Cypher来操作Neo4j。 这个案例的节点主要包括专业和课程两类,课程和课程之间有前置、并列等关系,专业和课程之间有包含等关系。 1、(可选)首先,我们删除数据库中…

微信开发者工具元素快速定位审查元素

一般浏览器里鼠标在元素上右键点击审查元素或检查元素即可快速打开开发者工具并定位到该元素,但在微信开发者工具中不支持, 解决方法 点击 elements左边的 小鼠标 图片,然后在主页面点击元素即可快速定位

代码审查规范(试用版)

目录 1、背景 2、目标 3、流程 4、指定代码审查规范 4.1、命名风格 4.2、常量定义 4.3、代码风格 4.4、注释风格 4.5、控制语句 5、执行代码审查规范 6、开展PR Bash活动 1、背景 2019年已成历史,2020年已经悄然到来。2019年,我们的研发团队经…

sonar代码审查

sonar代码审查 sonarqube简介七个方面检测代码质量sonarqube结构组件集成方式 sonar部署部署须知sonar搭建步骤1.查看本地环境2.查看java环境3.安装mysql4.安装及配置sonar5.启动sonar启动启动遇到的问题 sonar代码扫描一、使用sonar-scanner进行本地扫描二、使用Android studi…

代码审查

代码审查: 一种有效帮助提升代码质量的有效途径。 代码审查3W(what why when)常见的代码审查工具代码审查流程 1.代码审查3W(what why when): 代码审查:对计算机源代码系统化的审查,常用软件同行评审的方式进行,目…

java 代码审查_代码审查(Code Review)清单

代码审查可以帮助提高代码质量,避免由于代码习惯而造成的 bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是 Java 应用的话,这些建议应该被视作最佳实践。 文档 1. Javadoc 应该在每一个类和方法中添加。 2. 如果是修复某个 bug,应该添加 bug ID。 3. 走捷…

静态代码审查

本篇介绍静态代码审查的意义以及如何在Android studio中集成它们。需要注意的是,这些工具不是万能的,虽然它们能高效且全面地执行代码检查工作,但它们并不具备人类的“逻辑思维”优势。也就是说,静态代码审查工具是无法确保程序逻…

代码审查的必要性和最佳实践

目录 代码审查的流程 代码审查的争议 加班要累死了,完成项目都来不及,还做什么代码审查? 代码审查太费时间,改来改去无非是一些格式、注释、命名之类不痛不痒的问题。 团队的习惯和流程就是不做代码审查,大家都是…

如何审查网页元素

如何审查网页元素 对于一个优秀的爬虫工程师而言,要善于发现网页元素的规律,并且能从中提炼出有效的信息。因此,在动手编写爬虫程序前,必须要对网页元素进行审查。本节将讲解如何使用“浏览器”审查网页元素。 浏览器都自带检查…

代码审查(文档整理)

常用的代码审查工具 git/SUBVERSIONGerritUpsource显示代码变更√√√使用源码仓库√√在线代码讨论√√异步审查支持√√使用协议GPLv2/Apache License 2.0Apache License 2.0付费license 代码审查 范根检查法 轻量级的审查流程 结对编程同步代码审查异步代码审查 代码审查需…

代码审查“查”什么?

让我们来谈谈代码审查(Code Review)。如果花几秒钟去搜索有关内容,你会发现许多论述代码审查好处的文章(例如,Jeff Atwood的这篇文章)。你还会发现许多介绍如何使用代码审查工具的文档,比如我们…

uniapp的uview2.0框架u--textarea组件无法换行,换行无效问题解决方案

问题描述 在使用uniapp的uview2.0框架u–textarea组件时,想要使u–textarea支持换行输入,但是默认不支持换行输入,各种百度,没有找到解决问题的方案,最后只有查看源码如下 但发现源码没有对属性有过多的处理&#xff…

微信小程序textarea问题总结

微信小程序textarea问题总结 1.textarea多行输入框。该组件是原生组件 2.参考文档中的原生组件说明https://developers.weixin.qq.com/miniprogram/dev/component/native-component.html 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少&am…

JavaFX设置TextArea文本内容

本篇主要内容为设置TextArea的内容,涉及的知识面包括如何添加视图和控制层的关联,调用TextArea的方法设置文本内容,不仅实用于TextArea,还可以设置其它如Button,Label,TextField等组件的文本域或者其它属性…

原生div实现textarea

文章导航 为什么要用div实现textarea关键词实现效果源码示例 为什么要用div实现textarea div 实现 textarea 可以实现高度自适应 关键词 contenteditable: true|false 可以将元素内容区域调整为可编辑 实现效果 源码示例 &#x1f383; index.html <!DOCTYPE html>…

html textarea设置只读属性吗,HTML

HTML中的只读属性用于指定textarea元素为只读。如果文本区域为只读&#xff0c;则其内容无法更改&#xff0c;但可以复制并突出显示。这是一个布尔属性。 用法: Contents... 范例1&#xff1a;本示例使用只读属性在仅可读的输入textarea上写入内容。 HTML Textarea readonly A…

让textarea 只读

网上找到几种方案 都试了下 editable"false" readonly"readonly" disabled"disabled" 不知道是不是语法我写错了 但这么写效果是 &#xff08;顺寻代码和图片一致&#xff09; 第二个和第三个都是不能点 不能修改 第一个可以点可以修改

html页面只读,textarea只读 readonly =true;

Java TextArea 只读问题 TextArea ta new TextArea("",10,15,TextArea.SCROLLBARS_VEICAL_ON报啥错啊。 textarea怎么设置为只读 readonly true; C#语言&#xff1a;Listview控件中加了一个textarea&#xff0c;怎么在前台页面将textarea转化服务器控件&#xff0c;…

如何让textarea不可编辑只可读(博客常用)

如何让textarea不可编辑只可读&#xff08;博客常用&#xff09;。 Textarea的相关属性解释&#xff1a; rows&#xff1a;行高&#xff0c;就是你这个文本框能显示多少行文字 cols&#xff1a;宽度&#xff0c;代表你这个文本框有多宽 readonly&#xff1a;有个值readonly&am…