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一下 可以看到 这四个实体已经连接上了
文章来源:https://www.toymoban.com/news/detail-739299.html
编辑关系
- 修改属性
// 修改关系属性
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;
//可以看到下放返回的不是提示信息 而是实体和关系 如下图
文章来源地址https://www.toymoban.com/news/detail-739299.html
- 关系添加属性
// 直接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;
待续
到了这里,关于Neo4j Cypher语法教程 实体、关系增删改、高级查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!