Cypher语法大全

Neo4j示例节点操作创建节点查询节点编辑实体删除实体

关系操作新建关系和实体已存在实体新建关系编辑关系删除关系

高级搜索containsstarts withends withlimitSKIP分页order by

待续

Neo4j示例

安装完neo4j ,访问对应的web页面端口,输入以下命令进行学习

节点操作

创建节点

创建一个标签为stu的节点 (标签:将数据进行分类,方便管理)

create(n:stu);// 这里的n就是随便起的一个变量名,代指当前实体或者关系,下文会使用到。

创建一个标签为stu 且带有属性值的节点

create(n:stu{id:1,name:'小明',age:20});

查询节点

按照标签查询

match (n:stu) return n;

// 上文说到 n类似变量名, 一般可用于后续操作,

// match n:stu 指查询到标签为stu的节点 赋值给变量n ,return n则是将这批节点返回;

运行结果如下图 neo4j默认是将name属性用于展示

按照id进行查询

match (n:stu) where id(n) = 38023 return n;

//此id是neo4j默认分配给实体的id 不是上面定义的属性“id”

按照属性进行查询

match (n:stu) where n.name = '小明' return n;

多属性条件查询

match (n:stu) where n.name = '小明'and n.age = 20 and n.id = 1 return n;

编辑实体

添加多标签

// neo4j 支持多标签

match (n:stu) where id(n) = 38023 set n:stu1 return n;

match (n:stu) where id(n) = 38023 set n:stu2 return n;

可以看到该节点有三个标签

移除标签

match (n:stu) where id(n) = 38023 remove n:stu2 return n;

match (n:stu) where id(n) = 38023 remove n:stu1 return n;

修改某属性

match (n:stu) where n.name='小明' set n.name = '小红' return n;

修改多个属性值

match (n:stu) where n.name='小红' set n.age = '200' set n.id = 2 return n;

可以看到右侧已经修改成功

删除实体

//创建测试数据

create(n:stu{id:1,name:'小王',age:20});

//查询出来并删除

match (n:stu) where n.name = '小王' delete n;

删除成功可以看到返回提示 已删除一条实体

关系操作

新建关系和实体

该操作不需要提前创建实体

//创建标签为stu 属性name 的两个实体、标签为test的关系一个

create (n:stu{name:'小张'})-[r:test] -> (m:stu{name:'小李'})

//关系和实体同理 关系新建时也可以添加属性

create (n:stu{name:'小黄'})-[r:test{name:'夫妻'}] -> (m:stu{name:'小八'})

注:使用 match (n:stu) return n 该命令查询搜索stu标签的实体与关系

已存在实体新建关系

该操作需要提前创建实体

// 这两行是一条命令 分割一下看的清晰 第一步就是查出来 m、n实体 第二布就是给他俩创建关系

match (n:stu),(m:stu) where n.name = '小李' and m.name = '小八'

create (n)-[r:test{name:'儿子'}]->(m) ;

这时候我们 match一下 可以看到 这四个实体已经连接上了

编辑关系

修改属性

// 修改关系属性

match p = (n)-[r:test]->(m) where r.name='夫妻' set r.name='朋友';

// 我们想修改完后直接可以看到修改结果 我们在后面加一个return即可 将n-r-m赋值给一个变量 然后return这个变量 如下

match p = (n)-[r:test]->(m) where r.name='朋友' set r.name='闺蜜' return p;

//可以看到下放返回的不是提示信息 而是实体和关系 如下图

关系添加属性

// 直接set 新属性赋值即可

match p = (n)-[r:test]->(m) where r.name='闺蜜' set r.color='红色' return p;

修改标签 注意neo4j是不支持修改关系标签的,所以我们修改标签的操作是重新创建一个关系删除原关系,这样操作其实使用起来没有什么影响,需要注意的是关系的id会变

// 四行是一条命令 第一行 搜出来想要修改的关系 第二行新建关系 第三行复制原属性 第四行删除原关系

MATCH (n)-[r:test]->(m) where r.name='闺蜜'

CREATE (n)-[r2:relation]->(m)

SET r2 = r

DELETE r

删除关系

//直接match 锁定到某个或某几个关系 delete即可

match (n)-[r:relation]->(m) where r.name = '闺蜜' delete r;

//不确定的话 可以将delete换成return 先看一下返回的是不是要删的 然后再进行删除 命令如下

match p = (n)-[r:relation]->(m) where r.name = '闺蜜' return p;

高级搜索

contains

//包含

match (n:stu) where n.name Contains '小' return n

starts with

//开始于某条件 类似 like 小%

match (n:stu) where n.name starts with '小' return n

ends with

//结束于某条件 类似 like %红

match (n:stu) where n.name ends with '红' return n

limit

//限制返回条数 放在最后使用 return 后面

match (n:stu) return n limit 2;

SKIP

// 跳过几条 然后返回

match (n:stu) return n skip 3;

分页

//limit 和skip组合使用就是分页

match (n:stu) return n skip 2 limit 2;

order by

升序

//默认是升序 也可以加上 asc 效果一样

// 注意 id(n) 这个写法只针对于 默认生成的id 如果是你添加的属性不可以这么写

match(n:stu) return n order by id(n) ;

match(n:stu) return n order by id(n) asc;

//自己添加的属性要用 n.name

match(n:stu) return n order by n.id asc;

降序

match(n:stu) return n order by n.id desc;

待续

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: