Neo4j Cypher语法教程 实体、关系增删改、高级查询

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;

待续

猜你喜欢

转载自blog.csdn.net/pgcdnameming/article/details/129204371
今日推荐