Neo4j系统实战一

Neo4j系统实战一

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

目录:

Neo4j基本概念:

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

常用的Neo4j命令、函数:

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

语法案例实战:

1.删除所有标签、属性和关系。注:只应用于测试,三思而后用,后果非常严重。
MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

2.创建节点。语法:CREATE(名称:标签{属性键值对})
	eg:CREATE (小芳:人 {id:"xiaofang",name:"小芳",age:18})
	eg:批量创建
	 CREATE (小芳:人 {id:"xiaofang",name:"小芳",age:18}),
   				(张三:人 {id:"zhangsan",name:"张三",age:38})
          
3.查询节点、关系。(下面returnx相当于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,b

5.更新已有标签的属性。使用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 P

2.查找跟某某有关系的人,路径长度为1-2
MATCH P = (n {name:'刘亦菲'})-[*1..2]-(b ) return P
复制代码

参考资料

1.Cypher查询入门
2.Neo4j之Cypher学习总结
3.搜狗明星关系图谱数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值