Neo4j学习——基本操作(一)
由于开始学习知识图谱,因此需要涉及到neo4j的使用
一、介绍
neo4j是一个图形数据库基于Java开发而成,因此需要配置jvm才可以运行
配置请参考我前面的一篇blog:https://www.cnblogs.com/future-dream/p/9533757.html
二、基本操作
1、添加
(1)节点的添加
关键字:create;n是一个对象,用什么都可以,它的可以就是标签;节点信息(采用字典的格式):包括name、skill、master等等信息,这些key最后会作为property(属性)出现在property keys的内容中。
create (n:华山{name:"令狐冲", skill:"易筋经", master:"岳不群"})
结果:
1)创建一个节点
2)创建多个节点

(2)关系的添加
首先是获取两个关系对象,比如在添加"岳不群"和"令狐冲"的关系的时候,先建立两个对象,找出这两个点
在通过对象指明的标签,根据具体的属性值来查找出两个节点信息,最后用create (a) - [r:师徒] ->(b);来创建关系(注:关系有方向)
match (a:华山), (b:华山) where a.name = "岳不群" and b.name = "令狐冲" create (a)-[r:师徒]->(b);
结果:
(3)属性的增加
首先确定节点的位置, 然后使用set函数来增加和修改属性,如果属性存在就修改,如果属性不存在则添加
match (e:明教) set e.position = "master";
结果:
1)增加属性
2)修改属性
(4)跨标签建立关系
建立两个对象,然后建立的同时限定对象,最后用 create (object) - [r:relationship] -> (object),完成跨标签关系的建立
match (n:华山{name:"令狐冲"}), (m:衡山{name:"莫大"}) create (n) - [r:朋友] -> (m);
结果:
2、查找
(1)单节点查询
首先建立查找对象然后通过标识找出对应的节点
match (e:华山) where e.name = "令狐冲" return e
结果:
(2)整个label查询
与前面的操作一样,首先要建立一个对象(e)后面接标签确定要查找的节点信息,最后返回信息
match (e:华山) return e;
结果:
(3)关系查询
1)整体关系查询
查找所有师徒关系的节点,并返回结果。p1,p2依旧是对象,同时用一个R来接收这些信息。
match R = (p1:华山) - [r:师徒] ->(p2) return R;
结果:
2)单个关系查询
加入p1和p2的限定条件就可以完成单个数据查询(注:由于关系是有方向的因此不可以交换否则数据查找会出现none)
match R = (p1:华山) - [r:师徒] ->(p2) where p1.name="岳不群" and p2.name="令狐冲" return R;
结果:
正确结果
空值结果
3、删除
先匹配后进行删除操作(注:必须先删除关系,后删除节点,否则无法删除节点)
(1)关系删除
delete r,n就可以将数据和关系全部删除,选择带关系的就全部删除关系,选择带节点就全部删除节点
MATCH (n:令狐冲) - [r:朋友] -> (m:莫大) delete r;
结果:
(2)节点删除
MATCH (n:武当) delete n;
结果:
(3)属性标签删除
建立对象然后进行条件限定,在删除属性
MATCH (n:衡山{name:"莫大"}) remove n.id;
结果:
4、修改
如上建立一个华山的对象,用set函数来完成属性值的修改(注:限定条件,否则数据全部修改,导致错误)
MATCH (e:华山{name:"令狐冲"}) set e.skill = "吸星大法"
结果:
三、总结
通过上诉介绍了关于neo4j的基本操作,因此可以通过Python来完成连接。
(1)写一个易于理解的公式:
match (object:label{}), (object:label{}) set/create object.attribute = "content";
先进行匹配随便建一个对象object接收label里面的内容,{}里面加入限定条件,在逗号之后可以多次创建,一般是用来创建关系才会使用,再接方法。
(2)建立关系的方法:
create (object) - [r:relationship] -> (object)
由于前面我们已经建立了两个对象,因此直接使用就可以了,其中的r也是任意的,它是关系对象的标识。
(3)限制条件的方法:
where object.attribute = "content"
前面的对象加上对相应的属性,在设置content就可以了。
其中除了attribute和content需要引号处理,其他的可以用中文。
四、参考
参考文档:http://neo4j.com.cn/public/cypher/neo4j_cql_remove.html
Neo4j学习——基本操作(一)的更多相关文章
- Docker 学习基本操作与守护式容器
Docker 学习基本操作与守护式容器 容器操作 运行容器 docker run --name指定名字 -istdin -ttty虚拟终端 在终端中用 exit 即可退出容器,并结束运行 查看容器 p ...
- 知识图谱和neo4j的基本操作
一.知识图谱的简介 1.知识图谱是什么 知识图谱本质上是语义网络(Semantic Network)的知识库 可以理解为一个关系图网络. 2.什么是图 图(Graph)是由节点(Vertex)和边(E ...
- Neo4j学习笔记(1)——使用API编写一个Hello World程序
项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管理. 首先创建一个Maven Project,添加依赖: <dependency> <groupId& ...
- Neo4j学习笔记(1)——使用Java API实现简单的增删改查
阅读目录 项目的创建及配置 使用嵌入式数据库 创建节点和关系 查询及更新 删除关系和节点 完整代码 参考资料 回到顶部 项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管 ...
- Neo4j 学习笔记(-)
Neo4j 的使用说明(一)(基于V3.4.9) 下一篇(二):https://www.cnblogs.com/infoo/p/11947467.html 一.Neo4j简介 Neo4j是一个高性能的 ...
- Neo4j学习笔记(2)——数据索引
和关系数据库一样,Neo4j同样可以创建索引来加快查找速度. 在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行. 在Neo4j中,其索引是通过属性来创建,便于快速查找 ...
- neo4j 学习笔记
1.参考 https://blog.csdn.net/appleyk/article/category/7408344 系列文章 (不支持 spring boo 2.0 以下的,入门可做参考) 2.底 ...
- Neo4j学习笔记
1. 环境搭建 正好最近同学有一台阿里云服务器借我玩,就尝试着在服务器上搭了Neo4j. 环境:CentOS Linux release 7.4.1708 (Core) 安装Java 安装Neo4j需 ...
- Neo4j学习案例【转】
转自 打怪的蚂蚁 CSDN: https://blog.csdn.net/xgjianstart/article/details/77285334 neo4j有社区版本和企业版.社区版本是免费的,只支 ...
随机推荐
- SpringBoot学习笔记:http接口请求
controller package com.example.demo.controller; import java.util.HashMap; import java.util.Map; impo ...
- kubernetes学习控制器之StatefulSet控制器
StatefulSet介绍 一.StatefulSet概述 StatefulSet是用来管理stateful(有状态)应用的StatefulSet管理Pod时,确保Pod有一个按序增长的ID与Depl ...
- 安装Docker报container-selinux >= 2.9错
Docker装了无数次,还是会遇到如此熟悉的问题,知道他是版本需要更新,但是就是找不到对应的,在网上找了差不多一个下午都没弄好.发现平时还是要多动脑子才行,既然知道是版本需要更新,那么到官网直接找版本 ...
- SqlServer数据库之递归
递归的实现比较简单,这里就直接贴SQL了. --简单创建一个用户表 CREATE TABLE User( UserID ,) , ParentUserID INT ) 假设这张有几千条数据,开始递归它 ...
- LoadRunner脚本录制常见问题
LoadRunner录制脚本时为什么不弹出IE浏览器?当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Internet ...
- [转]【HttpServlet】HttpServletResponse接口 案例:完成文件下载
创建时间:6.19 & 6.24 1.案例-完成文件下载 1) 什么情况下会文件下载? 浏览器不能解析的文件就下载 *使用a标签直接指向服务器上的资源 2)什么情况下需要在服务端编写文件下载 ...
- Codeforces J. Sagheer and Nubian Market(二分枚举)
题目描述: Sagheer and Nubian Market time limit per test 2 seconds memory limit per test 256 megabytes in ...
- WPF的依赖属性和附加属性(用法解释较全)
转:https://www.cnblogs.com/zhili/p/WPFDependencyProperty.html 一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己 ...
- lynis安装和扫描Linux的安全漏洞
今天客户的服务器出了点问题需要排查具体的原因,在德国朋友的建议下用Lynis进行扫描,Lynis是Linux系统中的审计工具,能够对Linux系统的安全进行检测,在对系统进行扫描检测后,会生成安全报告 ...
- Comet OJ - Contest #2题解
传送门 既然没参加过就没有什么小裙子不小裙子的了-- 顺便全是概率期望真是劲啊-- 因自过去而至的残响起舞 \(k\)增长非常快,大力模拟一下就行了 int main(){ scanf("% ...