neo4j的Cypher的使用语句记录

357 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

基础

  • 查询关键字:MATCH
  • 创建关键字:CREATE
  • 删除关键字:DELETE
  • 设置属性关键字:SET
  • 设置关联关系:MERGE
  • 统计总数关键字:COUNT

1. 查询语句

1.1 查询节点

// 查询所有节点
MATCH (n) RETURN n
// 查询所有标签总数
match (n) return count(n)
// 查询某个标签总数
match (n:Person) return count(n)
// 查询某个标签的全部节点
MATCH (n) RETURN n
// 查询某个标签中等于某个属性的节点
MATCH (n:SocialUser {name:'李白'}) RETURN n 
// in的操作 查询n的节点名称为数组里的
MATCH (n:SocialUser) WHERE n.name in ['李白','杜甫'] RETURN n 
// 查询所有下级节点,包含开始节点
MATCH (a:Person {name:'龙小弟'})-[r*0..]->(b) return b
// 查询所有下级节点,不包含开始节点(设置层级就修改r*n的n值)
MATCH (a:Person {name:'龙小弟'})-[r*1..]->(b) return b
// 查询所有执行本节点的关系,包含本节点
MATCH (a:Person {name:'龙傲天'})<-[r*0..]-(b) return b
// 查询所有执行本节点的关系,不包含本节点(设置层级就修改r*n的n值)
MATCH (a:Person {name:'龙傲天'})<-[r*1..]-(b) return b

1.2 查询关系

// 查询所有具有对外关系的节点
MATCH (a)-->() RETURN a
// 查询所有具有被指向关系的节点
MATCH ()-->(a) RETURN a
// 查询所有存在的关系
MATCH ()-[r]->() RETURN r

2. 创建语句

// 创建一个标签为Person的节点,节点有一个name属性,属性值为'John'
CREATE (n:Person{name:'John'}) RETURN n
// 给a节点设置一个age属性,属性值为34
MATCH (a:Person{name:'Liz'}) SET a.age = 34
// 给某个标签对外的所有关系增加属性
MATCH p=(Person)-[r]->() SET r={since:"2017-01-02"}  RETURN p;   
// 给某个标签对外的某个关系增加属性
MATCH p=(Person)-[r:BIGBROTHER ]->() SET r={since:"2017-01-02"}  RETURN p;   
// 给某个标签中某个对应属性的节点对外的某个关系增加属性
MATCH p=(Person {name:'n1'})-[r:BIGBROTHER ]->() SET r={since:"2017-01-02"}  RETURN p;   

3. 删除语句

// 删除所有节点和关系,MATCH是匹配操作,()代表所有节点,DELETE为删除操作
MATCH (n) DETACH DELETE n
// 删除a节点的test属性
MATCH ... REMOVE a.test
// 删除a节点
MATCH ... DELETE a
// 删除两个标签之间的某个关系
match (n:Person)<-[r:BIGBROTHER]-(m:Person) DELETE  r
// 删除两个标签中某个节点之间的某个关系
match (n:Person {name:'n1'})<-[r:BIGBROTHER]-(m:Person {name:'n2'}) DELETE  r