图数据库 Neo4j 学习随笔之基础操作

Neo4j 系列

1、图数据库 Neo4j 学习随笔之基础认识
2、图数据库 Neo4j 学习随笔之核心内容
3、图数据库 Neo4j 学习随笔之基础操作
4、图数据库 Neo4j 学习随笔之高级操作
5、图数据库 Neo4j 学习之JAVA-API操作
6、图数据库 Neo4j 学习之SpringBoot整合

Neo4j - CQL 使用
Neo4j 的 Cypher 语言是为处理图形数据库而构建的,CQL 代表 Cypher 查询语言。
类似 关系型数据库的 SQL 语言。



前言

  1. CQL 是Neo4j 图形数据库的查询语言;
  2. 是一种声明性模式匹配语言;
  3. CQL 遵循 SQL 语法;
  4. 语法简单并且简单人性化,可读性高;
    CQL语言关键词

—> 附上官网语法通道

一、load

1.1 load csv

将csv文件的数据导入到Neo4j中。

load csv from 'D:\xxx.csv' as line create (:drama {name:line[0], label:line[1]})

二 create 创建

2.1 创建单节点

create (paper)

2.2 创建多节点

create (customer),(users)

2.3 创建节点(带属性)

创建一个带标签的节点并返回节点;

create (n:loveperson {name:'赵四', age:55, gender:'男'}) return n

创建了一个节点,属性值是手机信息。

2.4 创建关系

根据属性图模型,关系应该是定向的,否则,Neo4j将抛出错误信息。

2.4.1 单向关系

创建节点带关系;

create (z:loveperson {name:'赵四'})-[rel:亲家]->(l:loveperson {name:'刘能'}) return type(rel)

很多时候,在已有的节点上创建关系:

match (z:loveperson {name:'赵玉田'}),(l:loveperson {name:'翠花'})
create (z)-[rel:对象 {status:'未婚'}]->(l)
return type(rel)
2.4.2 双向关系

创建节点带双向关系;

create family=(:loveperson {name:'王小蒙', age:26, gender:'女'})<-[rel:夫妻 {status:'已婚'}]-(:loveperson {name:'谢永强', age:27, gender:'男'})-[rel2:父子]->(:loveperson {name:'谢广坤', age:58, gender:'男'}) return family

2.4.3 一对多创建关系

现在我们保持了很多象牙山村的村民们的信息,所以要给他们所有人都和象牙山村绑定(村民)的关系;
首先要匹配出来所有 loveperson 标签的人和 象牙山村节点,再用 create 给他们绑定关系是村民,最后返回这些关系的 id 值。

match (p:loveperson),(l:local {title:'象牙山村'})
create (l)-[rel:`村民`]->(p)
return id(rel)

三 match 匹配

3.1 匹配节点

匹配 name 是 ‘翠花’ 的村民

match (n:loveperson {name:'翠花'}) return n

3.2 匹配关系节点详细信息

匹配 标签是 loverperson 的全部节点和关系的信息,限制条数

match (n:loveperson)-[rel]->(m:loveperson) return n,m limit 10

3.3 匹配和节点有关系的节点

匹配找出“象牙山村”的所有村民们

match (:local {title:'象牙山村'})-[:`村民`]->(p:loveperson) return p

四 return 返回

匹配 姓名是 ‘翠花’ 的 村民

match (n:loveperson {name:'翠花'}) return n

4.1 返回节点或关系属性

match (n:loveperson) return id(n), n.name, n.age

五 where 条件

where后面匹配多个条件,姓名是 赵四 或者 翠花 的村民

match (n:loveperson) where n.name='翠花' or n.name = '赵四' return n

5.1 按照id 查询

用where 对 id 是 91 的节点获取

match (n) where id(n)=91 return n

5.2 按照节点属性查询

和 3.3 一样,我要找出象牙山村的所有村民;
首先指定,节点和节点的关系是 ‘村民’ 关系,再用 where 指定是 ‘象牙山村’。

match (l:local)-[:`村民`]->(p:loveperson) where l.title='象牙山村'  return p

六 delete 删除

6.1 按条件 删除节点

删除 姓名 是 ‘宋晓锋’ 的村民

match (n:loveperson {name:'宋小宝'}) delete n

6.2 按条件 删除关系

match (n:loveperson {name:'宋小宝'})-[rel]->(m) delete rel return n

七 remove 删除

7.1 移除节点的属性

match (n:loveperson {name:"宋晓峰"}) remove n.gender

7.2 移除节点的标签

1、首先添加一个具有多个标签的节点

create (n:loveperson:person {name:"宋晓峰", age:28, gender:"男"}) return n

2、移除掉节点的标签

match (n:loveperson:person {name:'宋晓峰'}) remove n:person return n

八 set 添加或修改属性

8.1 根据id修改属性

match (n:loveperson) where id(n) = 130 set n.age = 30 return n

8.2 根据id修改关系(补)

在我们初始创建节点和关系错误的时候,我们需要修改关系,也就是 type,关系的类型,其实也就是删除原来的关系建立新关系。

match (n:loveperson)-[rel]->(m:loveperson) where id(rel)=99
create (n)-[r:仇人]->(m)
delete rel
return type(r)

九 order by 排序

9.1 按照 age 进行升序排序

neo4j 在 match 命令中提供了 ‘order by’ 子句,对 match 返回的结果进行排序。

match (n:loveperson) return n order by n.age asc

十 union 子句

10.1 union 两个结果中的公共组合并返回一组结果中 (去重)

match (n:loveperson) return n.name as name
union
match (m:person) return m.name as name

10.2 union all 两个结果中的所有行组合成一个单一的结果集 (不去重)

match (n:loveperson) return n.name as name
union all
match (m:person) return m.name as name

十一 limit 和 skip 使用

11.1 limit 限制返回2个节点

match (n:loveperson) return n limit 2

11.2 skip 跳过2个节点

match (n:loveperson) return n skip 2

当然 limit 和 skip 一般都是一起使用,用于分页效果。

总结

本文主要记录了 neo4j 的简单操作(增、删、改、查)的各种 命令 的简单使用,还有 order by, union, skip , limit 这些常用的命令,笔记是学过知识的记录,也是增强记忆的方法,毕竟是亲手 尝试 并且 手敲上去的,留给自己,也分享给他人,有错误敬请留言指出。
图数据库 Neo4j 学习随笔之高级操作待续~~~

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值