博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Neo4j系统实战一
阅读量:7197 次
发布时间:2019-06-29

本文共 3283 字,大约阅读时间需要 10 分钟。

Neo4j系统实战一

Neo4j是一个高性能的图形数据库,查询的语言使用_Cypher_语言,通过创建节点和关系形成强大的节点网络。

目录:

Neo4j基本概念:

标签Label:类比于数据中的一张数据表,比如User表、Product表。

节点Node: 每个标签下可以有N个Node节点,每个节点代表一个对象,相当于数据表里的一行数据,例如一个用户,一部电影,一本书。
**关系Relation:**节点之间的连线代表对象之间的关系;节点和关系都可以带上若干属性。

常用的Neo4j命令、函数:

序号 命令 描述
1 CREATE 创建 创建节点、关系、属性
2 MATCH 匹配、查询 检索有关节点,关系和属性数据
3 RETURN 返回 返回查询结果(属性或图形)
4 WHERE 条件 检索数据的过滤条件
5 DELETE 删除 删除节点和关系,需要配合MATCH命令一起使用
6 REMOVE 删除 删除标签Label和属性,需要配合MATCH命令一起使用
7 ORDER BY 排序 排序检索的数据
8 SET 更新 添加或更新标签
9 SKIP 跳过 跳过多少行,即从第几行开始检索数据
10 UNION 联合 把多个MATCH的RETURN结果,组合成一个结果集,会自动去掉重复行
11 UNION ALL 联合不去重 同上,但是结果不去重
12 IN 包括 语法使用中括号[],包含数据
13 INDEX 索引 使用CREATE 创建索引,提高数据检索性能
14 EXPAIN EXPANIN MATCH结合使用,查看执行计划,以便提高性能优化
15 allshortestPath 查询路径、层级 返回所有路径、层级
16 shortestPath 随机一个路径、层级 随机返回一个路径、层级

语法案例实战:

1.删除所有标签、属性和关系。注:只应用于测试,三思而后用,后果非常严重。MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r2.创建节点。语法:CREATE(名称:标签{属性键值对})	eg:CREATE (小芳:人 {id:"xiaofang",name:"小芳",age:18})	eg:批量创建	 CREATE (小芳:人 {id:"xiaofang",name:"小芳",age:18}),   				(张三:人 {id:"zhangsan",name:"张三",age:38})          3.查询节点、关系。(下面return的x相当于sql中select *中的内容)	语法1:MATCH(变量名:标签 {条件键值对}) return x  语法2:MATCH(变量名:标签) where 变量名.id='xx' return x    eg:MATCH (n:人 {name:"小芳"}) return n  注:查询  4.创建关系,先用MATCH查询出来,再用MERGE进行创建  注:使用MATCH查询出张三和小芳,然后使用MERGE建立关系。	eg:MATCH (a:人 {name:"张三"}),(b:人 {name:"小芳"}) MERGE (b)-[:父亲]->(a) return a,b5.更新已有标签的属性。使用SET。	语法:MATCH (n:Person {xx:'xxx'}) set n.xx1=xx1, n.xx2=xx2 return n  eg:为“张三”添加两个属性,身高height和体重weight  MATCH (n:人 {name:'张三'}) SET n.height=178, n.weight=130 return n  6.删除操作,DELETE、REMOVE	6.1:删除节点关系,查询出a和b的关系x,使用delete删除关系x  MATCH (a:人 {name:"小芳"})-[x:父亲]->(b:人 {name:"张三"}) delete x    6.2:删除属性,查询出标签,使用remove删除xxx属性  MATCH (a:人 {name:"张三"}) remove a.weight return a    6.3:删除标签  MATCH (a:XX) remove a:XX  7.排序Order By、Limit多少行、Skip跳过多少行	eg:用法和SQL类似。  MATCH (n:Person) RETURN n order by n.id desc LIMI 25  MATCH (n:Person) RETURN n order by n.id desc skip 2 LIMI 25  8.唯一约束 CONSTRAINT 可以给定某个属性设置唯一约束	给名称设置唯一约束:	CREATE CONSTRAINT ON(a:Person) ASSERT a.name IS UNIQUE  9.查询几层关系,最短路径。关系链路越短,代表这两个节点越密切  两个函数:allshortestPath返回所有路径、shortestPath随机返回一个路径  eg:  MATCH P = shortestPath((n:Person {id:'mama'})-[*..3]-(b:Person {id:'nainai'})) return P复制代码

落地实战

1.整理关系
1.整理关系:刘亦菲-父亲->安少康刘亦菲-母亲->刘晓莉刘亦菲-义父->陈金飞刘亦菲-前男友->宋承宪刘亦菲-闺蜜->唐嫣刘亦菲-搭档->胡歌胡歌-好友->谢娜胡歌-前女友->江疏影胡歌-基友->霍建华胡歌-好友->杨幂霍建华-妻子->林心如霍建华-前女友->陈乔恩霍建化-搭档->杨紫霍建化-好友->杨幂复制代码

2.创建节点和关系
CREATE (刘亦菲:明星 {name:"刘亦菲"}),	   (安少康:名人 {name:"安少康"}),	   (刘晓莉:名人 {name:"刘晓莉"}),	   (陈金飞:名人 {name:"陈金飞"}),	   (宋承宪:名人 {name:"宋承宪"}),	   (唐嫣:明星 {name:"唐嫣"}),	   (胡歌:明星 {name:"胡歌"}),	   (谢娜:明星 {name:"谢娜"}),	   (江疏影:名人 {name:"江疏影"}),	   (霍建华:明星 {name:"霍建华"}),	   (杨幂:明星 {name:"杨幂"}),	   (林心如:明星 {name:"林心如"}),	   (陈乔恩:明星 {name:"陈乔恩"}),	   (杨紫:明星 {name:"杨紫"}),	   (刘亦菲)-[:父亲]->(安少康),	   (刘亦菲)-[:母亲]->(刘晓莉),	   (刘亦菲)-[:义父]->(陈金飞),	   (刘亦菲)-[:前男友]->(宋承宪),	   (刘亦菲)-[:闺蜜]->(唐嫣),	   (刘亦菲)-[:搭档]->(胡歌),	   (胡歌)-[:好友]->(谢娜),	   (胡歌)-[:前女友]->(江疏影),	   (胡歌)-[:基友]->(霍建华),	   (胡歌)-[:好友]->(杨幂),	   (霍建华)-[:妻子]->(林心如),	   (霍建华)-[:前女友]->(陈乔恩),	   (霍建华)-[:搭档]->(杨紫),	   (霍建华)-[:好友]->(杨幂)复制代码

3.关系图谱

4.数据钻取
1.查询某个标签节点的关系,例如,刘亦菲和林心如在3层关系中MATCH P = shortestPath((n:明星 {name:'刘亦菲'})-[*..3]-(b:明星 {name:'林心如'})) return P2.查找跟某某有关系的人,路径长度为1-2MATCH P = (n {name:'刘亦菲'})-[*1..2]-(b ) return P复制代码

参考资料

1.

2.
3.

转载地址:http://mwakm.baihongyu.com/

你可能感兴趣的文章
模型图纸数据库设计
查看>>
Two classes have the same XML type name 排错【转】
查看>>
linux笔记:linux常用命令-关机重启命令
查看>>
Configuring and troubleshooting a Schema Provider
查看>>
Windows环境安装MySQL数据库
查看>>
javascript函数以及作用域简介
查看>>
Windows Phone 编程中页面间传值方法 - [WP开发]
查看>>
apollo实现c#与android消息推送(四)
查看>>
Python入门之基础语法
查看>>
poj 2714 Random Walk
查看>>
jQuery 属性操作方法
查看>>
LeetCode——Longest Consecutive Sequence
查看>>
Activity转换为View和把图片转换为View
查看>>
參考mudo logging写的win下logging
查看>>
云数据库PolarDB(一)
查看>>
[数据结构] 迷宫问题(栈和队列,深搜和广搜)
查看>>
找不到对象?也许你应该这样做
查看>>
Hadoop集群动态服役新的数据节点&&退役数据节点
查看>>
springMVC中不通过注解方式获取指定Service的javabean
查看>>
Kruskal算法(求最小生成树)
查看>>