neo4j学习分享

1.环境搭建

文件下载

neo4j需要javaJDK,不同版本的neo4j需要的版本也不同,注意甄别。

JAVAJDK与neo4j可以参考Neo4j安装与配置以及JDK安装与配置教程(超详细)_neo4j 数据库javase1.8-CSDN博客

最新版本Neo4j的安装、配置和一丢丢使用要点(包括jdk配置),超详细教程_neo4j安装教程windows-CSDN博客

或者neo4j环境搭建与基本语法也可以参考Neo4j 安装、使用教程_neo4j菜鸟教程-CSDN博客

neo4j的下载地址:Neo4j Deployment Center - Graph Database & Analytics

 

点击进入后直接下拉找到图片然后下载对应系统版本的neo4j即可。e56eccb28a8b4d5d9495b82dfdeaa897.png点击下载后会出现如下界面,如果没有自动弹出下载链接点击中间蓝色的here打开下载链接。f1a8692517c44a7690ee745530b181b5.png

也有桌面版与Docker的neo4j(没有尝试,此处就不写了)

5cb682f4759d4f36836da708923c5ec7.png下载完成后解压即可e813d6e4a5fb41e6a358cd31c3c25679.png

没有import文件夹的可以新建,引入文件时需要将文件放入该文件夹里。

环境配置

打开系统环境变量,新建一个系统变量。变量名为:NEO4J_HOME,变量值:Neo4j主目录。(我的是C:\Apps\neo4j\neo4j-community-5.22.0-windows\neo4j-community-5.22.0),然后找到系统变量Path,新建一个,编辑为:%NEO4J_HOME%\bin。
d0600c83e42f4907916b191dc6c360b3.png

启动服务器

打开cmd,输入neo4j console
4b9c727c9acd44d590b0a075be4621c9.png

出现如上界面代表neo4j已经启动了,如果没有上述界面可能是javajdk版本与neo4j不匹配,neo4j的版本下错了,或者配置环境有问题,可以仔细找一下原因。

cmd出现started后不要关闭,在浏览器输入http://localhost:7474/后即可跳转neo4j的界面,初始的用户名和密码均是neo4j,点击连接后按照要求更改密码即可。

浏览器界面

c25e037f668d46e4bd23f7cb5739e8db.png

左上角为数据库管理,小星星为收藏管理(官方的教程也在里面),中间的黑框即程序语句的输入框,每次输入完代码后,回车或点击右边三角即运行此框的程序语句,左下角齿轮为设置。

2.简单的语法规则

neo4j本身也有示范程序,很经典,可以点击并运行学习体会neo4j从建立到查询到删除。

180584a8e4e5472892b24df70aa1e1b8.png

neo4j使用的是Cypher,关键字不区分大小写,但是名称区分(如节点名字),此处谨分享自己的简单的学习笔记。

创建:

创建节点:

create (别名:节点名 {属性名:属性值})

eg:CREATE (p:Person {name:'Mike'}) 

p为person的别名,person有一个name属性,属性值为Mike

可以有多个属性,如

eg:CREATE (p:Person {name:'Mike',grade:'two'}) 

创建关系:

MATCH (a:Person {name:'Mike'}),

(b:Person {name:'Sara'})

MERGE (a)-[:FRIENDS]->(b)

方括号为关系,FRIENDS为关系类型,此处->代表方向。

关系也可以有属性,如可以用[:FRIENDS{since:2006}]添加属性

创建融合节点:

有时想要创建一个节点指向很多节点,这时如果用create会产生很多一对一的节点,我们需要采用merge

eg:

merge (a:pinlei {name: row.品类属性})

merge (b:pinpai {name: row.品牌属性})

merge (a)-[:相关]-(b)
即建立了品类与品牌的相关关系。

读取文件(csv)创建对象:

以美妆产品的csv为例,文件需要放入meo4j的import文件夹中,文件格式须为csv,utf-8编码。
79a17bafc61843bd80ac96f6a8e4a919.png

假设表格中有关于产品相关属性的内容,导入

eg:LOAD CSV WITH HEADERS FROM 'file:///meizhuangtest.csv' AS row
CALL {
  with row
  merge (a:pinlei {name: row.品类属性})
  merge (b:pinpai {name: row.品牌属性})
  merge (c:chanpin {name:row.美妆产品属性})
  merge (d:guobie {name: row.国别属性})
  merge(e:gongxiao{name:row.功效属性})
  merge (f:jaige {name: row.价格区间})
  
    merge (a)-[:相关]-(b)
    merge (b)-[:产品]->(c)
    merge (c)-[:国家]->(d)
    merge (c)-[:功效]->(e)
    merge (c)-[:价格]->(f)
}

就会读取表格中品类属性,品牌属性,美妆产品属性等列的内容作为pinlei,pinpai,chanpin等不同类型的节点,并建立了品类相关品牌,品牌的有相关产品等关系。查询结果如下。

ee3b46e523c64f0d91d070be9ce9f8da.png

删除:

删除节点:

MATCH (p:person {name:'Mike'}) DELETE p

我的理解是match类似于sql的select用法,找到person中name为Mike的进行删除

删除有关系的节点:

MATCH (a:Person {name:'Mike'})-[rel]-(b:Person) DELETE a,b,rel
删除Mike及与他有关系的节点与关系(此处rel没有方向,及所有关系都删除,若-[rel]->则删除Mike及Mike指向其他人的节点与关系)

删除节点的属性:

MATCH (a:Person {name:'Mike'}) REMOVE a.grade

删除Mike的grade属性

删除所有节点:

MACTH (n) DETACH DELETE n

查询:

使用match进行查询,查询的方式有很多种。

eg:

MATCH (n:pinlei)

WHERE n.name = '口红'
return n

查找标签名为pinlei的节点为n,where限定pinlei的name为口红(类似于SQL的where),最终返回节点n。

7f6b0157e9cf43bbaf1ecaa4af64768b.png

eg:

查询品牌香奈儿的相关产品,程序语句为寻找pinpai节点与其指向其他节点,返回节点与关系,注意此时指定了是指向关系。
MATCH (n:pinpai)-[r]->(m) where n.name='香奈儿'RETURN n,r,m
72bb01f56f514d38a1f85751f5933fd0.png

eg:

如果没有箭头则是查询所有有关系的节点,没有方向限制

f653920324604eb9a80aba9b8f3e698d.png

查询具体的产品和其相关属性:

eg:MATCH (n:chanpin)-[r]-(m) where n.name='香奈儿口红'RETURN n,r,m

6042c361c0e243f19a21d047b6b12bce.png

 

在查看查询结果时,也有多种表现形式,以查询香奈儿口红为例,点击左侧的Table,即展现表格形式的对象:

2aa50e8d32e4451a9a1a4df1d0748981.png

点击左侧的Text,展现文本形式(底部调整显示宽度):

3c98878634544adebaf69f774d6a6f49.png

点击Code显示代码形式结果:

f3e779514c584f76b57d731ceb979687.png

3.其他的小介绍

节点按钮:

以下说明仍以美妆文件导入的数据为例。

在我查询的是口红后,出现的节点进行点击,会出现三个按钮:

84332295ee2b43e6b44215def2be0298.png

点击左侧的锁的按钮,就会收起三个按钮。(用处不大,点击空白处效果相同)

点击右侧的眼睛按钮,隐藏此节点与其关系。

c82329d76e964d15b79776ae1979d24c.png

9a7d7f014932471cb43a2bef29400f85.png

点击下方的按钮,会展示所有与其有关(单向,双向)的节点。

5b8c57a3160c442982d149f132114f8e.png

此时再次点击该按钮会收起有关系的节点。

438bd803925046e9858e42c7de65f102.png

注意,如果展示的节点与已显示的节点有关系也会被展示出来。如下面的例子:

c82329d76e964d15b79776ae1979d24c.png

点击展示“香奈儿护...”的节点的展示按钮后,其他的关系与之有关的也被展示出来了

cc7e7a044e14496d9e68c787af06cd99.png

节点颜色大小设置

有时需要根据关系调整大小与颜色以便于区分,可以使用右侧改变显示效果。

91d3bc1c7a0340fcb4b0ec09bce7b63c.png

使用color改变颜色,size改变大小

快速定位,放大,缩小

将查询的节点图像进行放大,缩小,与快速定位(即显示整个查询的图像概览)可以点击显示的右下角。cf4558ecf4e0449a914f0d0e909ebd30.png

也可以使用ctrl键加鼠标滚轮快速调整大小。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值