绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
neo4j学习笔记
2020-05-21 16:28:26

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

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Neo4j 图形数据库
创建时间:2020-05-19 17:48:05
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。 Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注.
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • ☀️
    专家
戳我,来吐槽~