什么是neo4j,其优点是什么?有什么用。
neo4j是一个图形数据库,它的优点是:
它很容易表示连接的数据
检索/遍历/导航更多的连接数据是非常容易和快速的
它非常容易地表示半结构化数据
Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
它使用简单而强大的数据模型
它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
neo4j可以很容易在众多关系中查询到指定两者间的关系,并且将其可视化,直观快速地找到其之间关系的所有内容。
1. 安装Java
在安装neo4j之前,需要先确定你的电脑是否已经安装Java程序,如果没有,你可以参考这个安装教程。https://blog.csdn.net/Good_zwn/article/details/87906599
2. neo4j下载
neo4j下载地址:https://neo4j.com/download-center/#releases
选择community Server, 选择windows版本。
下载到你指定的路径去。
3. 解压文件
然后解压文件到指定的目录下,我解压文件到我的电脑F盘,之后为了方便我辨认,我将它的文件夹名称改成neo4j_execise,你也可以写成其他名字,但是以英文字母命名(不要出现中文)。解压后的文件夹neo4j_execise里面的内容如下图:
4. 更改文件设置
因为我们以后可能电脑里面会存取多个neo4j数据库,所以这里我们就不去设置环境变量了,而是改动文件里面的一些设置。来达到我们可以开启neo4j的目的。
下面更改F:\neo4j_execise\bin\neo4j.ps1
文件的一些设置:
查找Import-Module "$PSScriptRoot\Neo4j-Management.psd1
改为:Import-Module "F:\June28\GREG\bin\Neo4j-Management.psd1
如果你存放的路径不同,记得在这里要改变成相应的路径。
5. 启动neo4j
快捷键win+ R
,输入cmd,运行,
进入到命令行界面,切换目录到F:\neo4j_execise\bin
,然后输入neo4j.bat console
, 或者输入neo4j console
也可以运行neo4j。
然后打开浏览器,输入网址:
http://localhost:7474/browser/
首次登录界面如下:
默认密码是neo4j
,之后更改成你自己的密码。
之后的界面如下图:
6. neo4j简单代码入门
在命令行输入的位置输入::play write-code
,或者点击write code
之后用快捷键Ctrl+Enter进行运行,或者点击最右边的运行命令。
neo4j就会出现一些例子给你选择学习了。
neo4j使用的是Cypher语言进行操作的,最主要的是CREATE、MATCH、RETURN、where等语句,下面展示的是这几个的基本用法。
6.1 创建——CREATE
6.1.1 创建节点
创建节点使用create
命令。
语法格式
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
语法说明
创建节点
create(:person{name:'小黄'})
create(:person{name:'老黄'})
create(:person{name:'小黄哥'})
create(:person{name:'小黄姐'})
create(:person{name:'小黄妹'})
create(:person{name:'小黄弟'})
create(:person{name:'小肖'})
create(:person{name:'小黄妈'})
这里我们围绕小黄同学的家庭设立节点。 person
是label,name
是属性(property)。小黄
等是属性值(property key)
6.1.2 创建关系
因为我们已经创建了节点,为了避免节点重复,我们先要找到对应的节点,然后建立关系。
找到对应的节点用的是MATCH
语句。关于MATCH
语法请看后面
创建关系
match(n:person{name:'小黄'}),(m:person{name:'小黄哥'})
create (n)-[r:home {relationship:'兄弟'}]->(m)
match(n:person {name:'小黄'}),
(dad:person {name:'老黄'}),
(sister1:person {name:'小黄姐'}),
(sister2:person {name:'小黄妹'}),
(bro:person {name:'小黄弟'}),
(girlfriend:person {name:'小肖'}),
(mam:person {name:'小黄妈'})
create (n)-[:home {relationship:'父母'}]->(mam),
(n)-[:home {relationship:'父母'}]->(dad),
(n)-[:home {relationship:'姐姐'}]->(sister1),
(n)-[:home {relationship:'妹妹'}]->(sister2),
(n)-[:home {relationship:'弟弟'}]->(bro),
(n)-[:friend {relationship:'女朋友'}]->(girlfriend)
6.2 查找——MATCH
6.2.1 MATCH
语法
MATCH
(
<node-name>:<label-name>
)
语法说明
6.2.2 查找节点
查找小黄
MATCH (n:person{name:'小黄'})
RETURN n
查找小黄
和小黄哥
MATCH (n:person{name:'小黄'}),(m:person {name:'小黄哥'})
RETURN n,m
6.2.3 查找关系
查找小黄
和小肖
的关系
MATCH p = (n:person{name:'小黄'})-[]->(m:person {name:'小肖'})
RETURN p
查找小黄
和所有人的关系
MATCH p = (n:person{name:'小黄'})-[]->()
RETURN p
6.3 筛选——where
where语句是用来筛选节点或关系的。
6.3.1 筛选节点
查找小黄
命令1
match (n)
where n.name='小黄'
return n
命令2
match (n:person)
where n.name='小黄'
return n
命令1是遍历所有之后,才根据条件name='小黄’筛选出来的,当节点过多的时候,建议采用命令2去查找,有label这个设定之后,遍历的节点范围会有所缩小,速度会更快一些,所占用内存空间也会减少。
查找小黄
和小黄哥
match (n:person)
where n.name='小黄' or n.name='小黄哥'
return n
注意额:我用的是or
,用and
就找不到结果咯额。
6.3.2 筛选关系
查找关系是女朋友
的节点
match p= (n:person)-[r]->(m:person)
where r.relationship='女朋友'
return p
参考:https://www.w3cschool.cn/neo4j/
![](https://oss-emcsprod-public.modb.pro/wechatSpider/modb_20210516_532b7148-b606-11eb-96c3-00163e068ecd.png)