ITPub博客

首页 > 数据库 > > neo4j学习笔记

neo4j学习笔记

作者:兔子爱喝奶茶 时间:2020-05-21 16:28:26 0 删除 编辑

neo4j图形数据库学习:

前期准备:

jdk1.8以上版本(neo4j依赖于java)

neo4j数据库(社区版)下载,安装


先给出一张样例图:

neo4j图形数据库,初学者要了解两个关键元素:节点和关系。节点就如上图画的那样,是一个个圆点内容,关系呢,是上图中的箭头指向,即两个节点的桥梁叫关系。

上图是python体系的几个岗位关键或基础知识总结,我选取其中的爬虫知识来进行neo4j数据库的增删改查练习。

我的是Windows10 环境,现在命令行启动neo4j数据库:neo4j console

然后打开浏览器,输入localhost:7474/

首先我们要学的第一个小技巧,假如你英文没学好,看着英文就头疼咋办?

那你就用谷歌浏览器打开上面那个界面,谷歌浏览器地址栏有【翻译此页】,即可把英文界面翻译成中文。(仅限查看内容,执行命令的时候,还是要用英文界面,不然执行的命令会也会被翻译为中文,无法执行Cypher语句)

练习的第一个命令:

:help Cypher

Cypher的帮助文档,它罗列出了Cypher常用的关键字

增

现在我们新增一个name="爬虫",属性是岗位的节点:

create (:Jobs {name:"爬虫"})

和其他数据库一样用关键字create 创建节点;小括号包裹创建节点的内容;冒号左边是变量名,右边是节点属性;节点内容键值对方式包裹在大括号里。

一次性创建多个节点属性都是知识的节点(CSS,Linux,HTML)

create(:Knowledge {name:"HTML"}),(:Knowledge {name:"CSS"}),(:Knowledge {name:"Linux"})

多节点创建和单节点创建基本无差别,以逗号隔开即可同时创建

节点创建了,下面我们来创建关系

爬虫需要HTML、CSS和Linux的知识(即爬虫这个节点要指向HTML和Linux的节点)

match(a:Jobs{name:"爬虫"}),(b:Knowledge) create(a)-[:need]->(b) return a,b

match 和 return是查询的关键字,查询内容和create内容一样格式,创建关系还是用create,但格式是:create (节点A) -[:关系属性]->(节点B) 或者先查询AB节点,再进行关联关系match(a:节点A),(b:节点B) create (a) -[:关系属性]->(b) return a,b (注:查询结果必须return)

那我们能不能直接创建一个关系关联一个新建的节点呢?

爬虫节点需要Python的知识(Python的知识节点还没开始创建)

match(a:Jobs{name:"爬虫"}) create(a)-[:need]->(b:Knowledge{name:"Python"}) return a,b

这里先创建了Python的节点再与爬虫节点关联

上面创建节点和关系,顺带讲了一点查询的语句。

查

查询节点:

查询爬虫这个节点:

match(a:Jobs{name:"爬虫"})  return a

查询属性为Jobs的所有节点:

match(a:Jobs)  return a

这里不写属性的详细信息,就是查找该属性下的所有内容。

还有一种为大数据量准备的查询,只显示部分数据的

只显示前25条数据:

match(n:Jobs) return n limit 25

加了个limit条数限制

查询HTML和CSS的节点内容:

match(a:Knowledge{name:"HTML"}) ,(b:Knowledge{name:"CSS"}) return a,b

或者还有一种写法:

match(a:Knowledge) where a.name="HTML" or a.name="CSS" return a

查询关系呢

match(a:Jobs)-[]-(b:Knowledge) return a,b

查询Jobs和Knowledge属性节点的所有关系

match(a:Jobs)-[]->(b:Knowledge) return a,b

查询Jobs和Knowledge属性节点的由Jobs指向Knowledge的所有关系

match(a:Jobs)-[:need]->(b:Knowledge) return a,b

关系属性为need,查询Jobs和Knowledge属性节点的由Jobs指向Knowledge的所有关系

改

增加或修改属性内容:

新建一个Jobs节点无属性内容:

create (:Jobs)

将无属性内容的节点添加name属性:

match(d:Jobs) where id(d)=23 set d.name="大数据" return d

用关键字set 进行属性设置

查询的时候这里我碰到个问题,如何用id去查找(因为Jobs之前有个爬虫名字的),后来百度了一下,用where id(变量名)=23查找数据。

删

删除分节点删除和属性删除:

新建一个Dog属性:

create(:Dog{name:"狗"})

删除它的名字:

match (d:Dog) remove d.name return d

这里用remove进行属性删除

删除整个节点:

无关系型节点:

match (d:Dog) delete d

有关系型节点:

删除CSS属性节点:

match(d:Knowledge{name:"CSS"})-[e:need]-(f:Jobs) delete d,e

先查找关联关系,删除节点的同时,也删除关系。这里可以类推,删除一个关系,只要上面的语句delete后面把d去掉,即删除关系

简单的聚合计算:

计算Knowledge属性节点有多少个:

match(d:Knowledge) with count(d) as c return c

查找所有Knowledge属性节点,用关键字with + count 求和,再将求和的值赋值给临时变量c

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69918097/viewspace-3141035/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 关于C语言~
下一篇: DB2性能调优
请登录后发表评论 登录
全部评论

注册时间:2019-04-26

  • 博文量
    1470
  • 访问量
    11222