Neo4j_Cypher

1、Cypher增删改查

① 增
创建节点:
create (n:node_type{name:’Regan’,age:24}) return n;
node_type:该节点所属标签名字
创建关系:
start regan=node:test(name=’Regan’), lucy=node:test(name=’Lucy’) create (regan)-[r:friend]->(lucy) return r
注意:需要在name属性上创建索引才能执行以上命令
创建不存在的图形实体,应该使用创建唯一的(create unique)Cypher命令:
start regan=node:test(name=’Regan’), lucy=node:test(name=’Lucy’) create unique (regan)-[r:friend]->(lucy) return r

② 删
删除节点:
MATCH (n:test) delete n
删除test标签下所有的节点
删除关系:
MATCH (n:test)-[r:friend]->() delete r
删除test标签下所有节点的friend关系

③ 改
更新节点:
match (regan:node_type) where regan.name=’Regan’ set regan.age=25;

④ 查
使用索引查找起始节点:
start regan=node:test(name=’regan’) return regan;
使用模式索引查找起始节点:
match (n:node_type) where n.name=’Regan’return n;

2、Cypher的基本句法

这里写图片描述
类似地,节点也可以匿名。要使节点匿名,使用空的圆括号()指定节点。

这里写图片描述
在Cypher查询的match语句中可以不使用圆括号指定命名节点,例如start user=node(1)match user-[:HAS_SEEN]->movie return movie。在复杂的查询中,如果可能,也可以去掉圆括号,以简化查询且使之可读。匿名节点必须有圆括号。查找用户1的朋友看过的所有电影:

这里写图片描述
John和他的的朋友都看过的所有电影节点:

这里写图片描述
作为结果的节点必须匹配所有逗号隔开的模式,相当于一个“并”(AND)语句。
John没有看过,但是他的朋友看过的电影:

这里写图片描述

这里写图片描述
对于字符串属性,除标准的等于号(=)比较外,还可以使用正则表达式过滤掉指定的值。

这里写图片描述
Cypher中的正则表达式比较符是等于波浪号(=~)。正则表达式放在两个正斜杠之间(/)。表达式本身遵从标准的Java正则表达式句法
要过滤具有给定属性的节点而不管属性的值(例如,具有Twitter账号的所有朋友), 则需要使用Cypher的has函数。

这里写图片描述
返回属性

这里写图片描述
返回关系

这里写图片描述
返回路径

这里写图片描述
聚合

这里写图片描述
除count函数外,Cypher支持SQL的所有常用的聚合函数:SUM的数值求和、 AVG计算平均值到MAX和MIN寻找数值属性中的最大值和最小值。要求John 所有朋友的平均年龄,可以使用以下查询:

这里写图片描述
函数
Cypher函数用于访问图形实体的内部属性,例如节点和关系的编号和节点标签(类型)。在计数的例子中,已经看到了用ID(node)函数获取指定节点的内部编号。另外,也可以使用TYPE(relationship)函数查找一个关系的类型。

这里写图片描述
John希望在Facebook上介绍给Kate。他不认识Kate,但是想找出谁是Kate的朋友, 朋友的朋友认识她,直至第三层的朋友。因为他需要使用Facebook,所以他仅仅对 Facebook上的人(即有Facebook Id属性设置的人)感兴趣。

这里写图片描述
·HAS(graphEntity.propertyName)——如果一个节点或关系具有给定名字的属性存在, 则返回true。
·NODES(path)——把一个路径转换成一个可迭代的节点集。
·ALL(x in collection where predicate(x))——如果collection中的每一个单个元素匹 配了给定的predicate,则返回true。
With语句的管道功能

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值