Neo4j图数据库学习第二章基本概念和典型例子.docx

上传人:b****6 文档编号:8838538 上传时间:2023-02-02 格式:DOCX 页数:12 大小:729.03KB
下载 相关 举报
Neo4j图数据库学习第二章基本概念和典型例子.docx_第1页
第1页 / 共12页
Neo4j图数据库学习第二章基本概念和典型例子.docx_第2页
第2页 / 共12页
Neo4j图数据库学习第二章基本概念和典型例子.docx_第3页
第3页 / 共12页
Neo4j图数据库学习第二章基本概念和典型例子.docx_第4页
第4页 / 共12页
Neo4j图数据库学习第二章基本概念和典型例子.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Neo4j图数据库学习第二章基本概念和典型例子.docx

《Neo4j图数据库学习第二章基本概念和典型例子.docx》由会员分享,可在线阅读,更多相关《Neo4j图数据库学习第二章基本概念和典型例子.docx(12页珍藏版)》请在冰豆网上搜索。

Neo4j图数据库学习第二章基本概念和典型例子.docx

Neo4j图数据库学习第二章基本概念和典型例子

第1章

Neo4j基本概念与入门实例

●Neo4j图数据中基本元素与概念

●官方入门实例简介

1.1Neo4j图数据中基本元素与概念

1.1.1节点

节点(Node)是图数据库中的一个基本元素,用以表示一个实体记录,就像关系数据库中的一条记录一样。

在Neo4j中节点可以包含多个属性(Property)和多个标签(Label)。

 

1.1.2关系

关系(Relationship)同样是图数据库中的基本元素。

当数据库中已经存在节点后,需要将节点连接起来构成图。

关系就是用来连接两个节点,关系也称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起。

关系和节点一样可以包含多个属性,但关系只能有一个类型(Type),

图1-1带有类型和属性的关系

图1-2多个关系指向同一节点

关系必须有开始节点(Startnode)和结束节点(Endnode),两头都不能为空。

图1-3关系的起始节点和结束节点

节点可以被关系串联或并联起来,由于关系可以是有方向的,所以我们可以在由节点、关系组成的图中进行遍历操作。

图1-4关系串联节点

图1-5关系并联节点

在图的遍历操作中我们可以指定关系遍历的方向或者指定为无方向,因此在创建关系时不必为两个节点创建相互指向的关系,而是在遍历时不指定遍历方向即可。

这样在遍历时不指定方向即可。

特别注意一个节点可以存在指向自己的关系:

图1-6关系的起始、结束节点为同一节点

 

图1-7

1.1.3属性

类型

说明

取值范围

boolean

布尔值

 true或false

byte

8位的整数

-128到127,inclusive

short

16位的整数

-32768到32767,inclusive

int

32位的整数

-2147483648到2147483647,inclusive

long

64位的整数

-9223372036854775808到9223372036854775807,inclusive

float

32位IEEE754标准浮点数

 /

double

64位IEEE754标准浮点数

 /

char

16位无符号整数代表的字符

u0000到uffff(0to65535)

string

Unicode字符序列

 /

1.1.4路径

当使用节点和关系创建了一个图后,在此图中任意两个节点间都是可能存在路径的。

图中任意两节点都存在由节点和关系组成的路径,路径也有长度的概念,也就是路径中关系的条数。

图1-1路径

当然也可以说单独一个节点就可以组成长度为0的路径:

图1-2长度为0的路径

如果是两个简单的节点,中间只存在一条关系,那这条路径的长度就是1:

图1-3长度为1的路径

 

1.1.5遍历(Traversal)

遍历一张图就是按照一定的规则,根据它们之间的关系,依次访问所有相关联的节点的操作。

 

1.2官方入门实例介绍

为了方便读者入门,Neo4jWeb管理界面提供了一个官方入门实例“电影关系图”帮助初学者在自己电脑上一步步创建一个入门级别的图数据结构。

本节将围绕这个“电影关系图”实例一步步讲解、分析其创建和查询等操作。

图1-1Neo4jWeb管理界面

这个实例将指引读者学习以下入门操作:

(1)创建图数据:

将电影、演员、导演等图数据导入到Neo4j数据库中。

(2)检索节点:

检索特定电影和演员。

(3)查询关系:

发现相关的演员和导演。

(4)查询关系路径:

查询他们之间的关系路径。

 

1.2.2创建图数据

【程序2-38】创建电影节点

CREATE(TheMatrix:

Movie{title:

'TheMatrix',released:

1999,tagline:

'WelcometotheRealWorld'})

上面Cypher语句运行后将会在我们的数据库中创建一个Movie节点,在数据库中的存储形态如下图所示:

【程序】创建人物节点

CREATE(Keanu:

Person{name:

'KeanuReeves',born:

1964})

上面代码使用CREATE指令创建了一个Person节点,节点带有两个属性{name:

'KeanuReeves',born:

1964}。

在后续的6行代码中都使用了同样的CREATE指令分别创建了人物:

Carrie、Laurence、Hugo、LillyW、LanaW和JoelS。

【程序2-39】创建演员、导演关系

CREATE

(Keanu)-[:

ACTED_IN{roles:

['Neo']}]->(TheMatrix),

(Carrie)-[:

ACTED_IN{roles:

['Trinity']}]->(TheMatrix),

(Laurence)-[:

ACTED_IN{roles:

['Morpheus']}]->(TheMatrix),

(Hugo)-[:

ACTED_IN{roles:

['AgentSmith']}]->(TheMatrix),

(LillyW)-[:

DIRECTED]->(TheMatrix),

(LanaW)-[:

DIRECTED]->(TheMatrix),

(JoelS)-[:

PRODUCED]->(TheMatrix)

上面的指令运行完后,数据库中会有以下存储形态:

1.2.3检索节点

图数据结构创建完毕后,在本节中我们将要了解检索节点的相关操作。

1.2.3.1查找人员

【程序2-44】查找名为“TomHanks”的人物

MATCH(tom{name:

"TomHanks"})RETURNtom

上面指令使用MATCH指令查找匹配条件:

{name:

"TomHanks"}的节点,执行的结果为:

图1-1查找到的节点

我们可以在结果显示区看到查询到的节点,注意在结果展示区点击节点图标,会查看到节点的属性。

1.2.3.2查找电影节点

【程序2-45】查找名为“CloudAtlas”的电影

MATCH(cloudAtlas{title:

"CloudAtlas"})RETURNcloudAtlas

上面指令查找匹配条件{title:

"CloudAtlas"}的节点,返回结果为:

图1-1查找到的节点

1.2.3.3随机查找多个人物的人名

【程序2-46】随机查找10个人物的人名

MATCH(people:

Person)RETURNpeople.nameLIMIT10

上面指令查找10个Person节点,然后返回每个节点的name属性,返回结果为:

图1-1name属性列表

1.2.3.4查找多个电影

【程序2-47】查找1990年到2000年发行的电影的名称

MATCH(nineties:

Movie)

WHEREnineties.released>1990ANDnineties.released<2000

RETURNnineties.title

返回结果为:

图1-1title属性列表

 

图1-2

1.2.4查询关系

下面拓展MATCH指令的使用。

1.2.4.1查找演员参演的电影

【程序2-48】查找"TomHanks"参演过的电影的名称

MATCH(tom:

Person{name:

"TomHanks"})-[:

ACTED_IN]->(tomHanksMovies)RETURNtom,tomHanksMovies

返回结果为:

图1-1"TomHanks"参演过的电影

通过结果可以看到演员TomHanks参演过的所有电影。

【程序2-49】查找谁导演了电影“CloudAtlas”

MATCH(cloudAtlas{title:

"CloudAtlas"})<-[:

DIRECTED]-(directors)RETURNdirectors.name

返回结果为:

图1-2电影“CloudAtlas”的导演名单

【程序2-50】查找与“TomHanks”同出演过电影的人

MATCH(tom:

Person{name:

"TomHanks"})-[:

ACTED_IN]->(m)<-[:

ACTED_IN]-(coActors)RETURNcoActors.name

返回结果为:

图1-3与“TomHanks”同出演过电影的人

【程序2-51】查找与电影“CloudAtlas”相关的所有人

MATCH(people:

Person)-[relatedTo]-(:

Movie{title:

"CloudAtlas"})RETURNpeople.name,Type(relatedTo),relatedTo

返回结果为:

图1-4与电影“CloudAtlas”相关的所有人

 

图1-5

1.2.5查询关系路径

【程序2-52】查找与演员“KevinBacon”存在4条及以内关系的任何演员和电影

MATCH(bacon:

Person{name:

"KevinBacon"})-[*1..4]-(hollywood)

RETURNDISTINCThollywood

返回结果为:

图1-1与演员“KevinBacon”存在4条及以内关系的演员和电影

【程序2-53】查找与演员“KevinBacon”与“MegRyan”之间的最短关系路径

MATCHp=shortestPath(

(bacon:

Person{name:

"KevinBacon"})-[*]-(meg:

Person{name:

"MegRyan"})

RETURNp

返回结果为:

图1-2“KevinBacon”与“MegRyan”之间的最短关系路径

1.2.6思考与练习

【程序2-54】查找没有与TomHanks合作过的演员

MATCH(tom:

Person{name:

"TomHanks"})-[:

ACTED_IN]->(m)<-[:

ACTED_IN]-(coActors),

(coActors)-[:

ACTED_IN]->(m2)<-[:

ACTED_IN]-(cocoActors)

WHERENOT(tom)-[:

ACTED_IN]->(m2)

RETURNcocoActors.nameASRecommended,count(*)ASStrengthORDERBYStrengthDESC

结果为:

图1-1没有与TomHanks合作过的演员

【程序2-55】找人将TomHanks介绍给TomCruise

MATCH(tom:

Person{name:

"TomHanks"})-[:

ACTED_IN]->(m)<-[:

ACTED_IN]-(coActors),

(coActors)-[:

ACTED_IN]->(m2)<-[:

ACTED_IN]-(cruise:

Person{name:

"TomCruise"})

RETURNtom,m,coActors,m2,cruise

结果为:

图1-2找人将TomHanks介绍给TomCruise

 

1.2.7清空数据库

【程序2-56】清空所有Person、Movie节点及其所有关系

MATCH(a:

Person),(m:

Movie)OPTIONALMATCH(a)-[r1]-(),(m)-[r2]-()DELETEa,r1,m,r2

【程序2-57】查询任意数据

MATCH(n)RETURNn

如果没有,就说明已经删除成功了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1