Cypher 基本规则

因为最近项目需求使用neo4j,所以学习了cypher,记录下,以免以后遗忘了到处找

查询

MATCH (变量名:label {属性:值}) RETURN 变量名

MATCH (n:node {name :'xxx'}) RETURN n

或者

MATCH (变量名:label) WHERE 变量名.属性=值 RETURN 变量名

MATCH (n:node) WHERE n.name='xxx' RETURN n

模糊查询

match (node) WHERE n.id=~'.*xxxxx.*' RETURN n

多label查询

交集

MATCH (n:label1:label2) RETURN n

并集

MATCH (n) WHERE n:label1 OR n:label2  RETURN n

新建

CREATE (变量名:label {属性1:值,属性2:值…})

CREATE (n:node { name : 'xxx' , age : '25'})

删除

MATCH (变量名:label {属性:值}) DELETE 变量名

MATCH (n:node {name:'xxx'}) DELETE N

若是要删除该节点的所有关系则加上detach

MATCH (n:node {name:'xxx'}) DETACH DELETE n

关系

MATCH (变量名1:label {属性:值}),(变量名2:label {属性:值}) CREATE(变量名1)-[关系变量名:关系名]->(变量名2)

MATCH (n1:node {name :'xx'}),(n2:item {city:'yyy'}) CREATE (n1)-[r:has]->(n2)

查找指定节点属性

MATCH (变量名:label) return distinct keys(变量名) as 返回时变量名

MATCH (n:node) return distinct keys(n) as p

查找所有label

CALL db.labels()

更新

修改节点name属性,新增age属性

MATCH (n:node {name:'xxx'}) 
SET n.name='yyy'
SET n.age=10

若是这样写则会直接覆盖node节点的所有属性

MATCH (n:node {name:'xxx'}) 
SET n={city:'yyy'}

若是这样则会新增一个属性,并不会覆盖

MATCH (n:node {name:'xxx'}) 
SET n +={city:'yyy'}

添加多个标签,若只是一个,则只写一个就可以了

MATCH (n:node {name:'xxx'}) 
SET n:label1:label2

MERGE

MERGE可以确保图数据库中存在某个特定的模式(pattern)。如果该模式不存在,那就创建它。

如果没有node就会创建node再返回

MERGE (n:node) RETURN

通过ID查询

match(n) where id(n)=$ID return n
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值