Neo4j图数据库
01. 图数据库
图数据库是专门存储和检索大量信息网络的存储引擎。它可以有效地将数据存储为节点和关系,并允许高性能检索和查询这些结构。属性可以添加到节点和关系。节点可以用零个或多个标签标注,关系总是定向和命名。
1. Neo4j
Neo4j是一个开源的NOSQL图形数据库。它将数据转换成化为节点、关系和属性。使用图查询语言Cypher,支持集群,支持ACID事务,并发控制、事务恢复、高可用性。
介绍(第一章):
https://neo4j.com/docs/developer-manual/3.2/introduction/
基础入门:https://neo4j.com/developer/java/
Java开发手册:http://neo4j.com/docs/java-reference/current/
Java API: https://neo4j.com/docs/java-reference/current/javadocs/
2. 图查询语言Cypher
1. 查询语言文档(第三章)
https://neo4j.com/docs/developer-manual/3.2/cypher/clauses/
2. 创建节点
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
前面的Keanu实际没有作用,
3. 建立联系
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix)
:['Neo']指的是关系上的属性。
4. 删除
删除所有节点和关系 :
MATCH (n) DETACH DELETE n
删除CLASS标签所有节点和关系:
MATCH (n:CLASS) DETACH DELETE n
MATCH (n:CLASS) where n.title='A Few Good Men' DETACH DELETE n
5. match(查找)
1. 返回数据库中所有类型的节点
MATCH (n) RETURN n
返回独立节点:
MATCH (tom {name: "Tom Hanks"}) RETURN tom
MATCH (people:Person) RETURN people.name LIMIT 10
2. 标签类型的所有节点
MATCH (movie:Movie) RETURN movie.title
3. 不带联系指向的match
MATCH (director { name: 'Nora Ephron' })--(movie)
RETURN movie.title
返回所有'Nora Ephron'导演的电影。符号‘--’指的是不考虑联系的类型和方向。
4. 带联系指向的match
MATCH (:Person { name: 'Nora Ephron' })-->(movie)
RETURN movie.title
这个只知道有联系,但是不清楚联系的类型。
5. 带联系指向和类型的match
MATCH (wallstreet:Movie { title: 'The Matrix Reloaded' })<-[:ACTED_IN]-(actor)
RETURN actor.name
返回所有acted in 'The Matrix Reloaded'演员。
带了联系指向和类型。
MATCH (director:Person)-[:DIRECTED]->(movie)
WHERE director.name = "Vincent Ward"
RETURN movie.title
箭头的指向实际上就是关系的指向。
等价于:
MATCH (movie)<-[:DIRECTED]-(director)
WHERE director.name = "Vincent Ward"
RETURN movie.title
6. 多类型匹配
MATCH (movie { title: 'The Matrix Reloaded' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person.name
返回和'The Matrix Reloaded'是演员或者导演关系的人
7. 查询这个节点类和其相关调用
MATCH (c:CLASS{ name: 'PreFetchServiceImpl' })--(class)RETURN c,class
3. Java API
1. 创建节点
CREATE (n:CLASS {id : {id}, name: {name}, type: {type}, appCode : {appCode}, pack : {pack}, urls : {urls}})
2. 建立联系
MATCH (a:CLASS),(b:CLASS) WHERE a.id = {aId} AND b.id = {bId} CREATE (a)-[r:IMPLEMENT]->(b)
a指向b,联系的名称是“IMPLEMENT”
Demo:
Driver driver = GraphDatabase.driver("bolt://127.0.0.1:7687", AuthTokens.basic("neo4j", "1234"));
Session session = driver.session();
session.run("CREATE (a:Person {name: {name}, title: {title}})",
parameters("name", "Arthur", "title", "King"));
StatementResult result = session.run("MATCH (a:Person) WHERE a.name = {name} " +
"RETURN a.name AS name, a.title AS title",
parameters("name", "Arthur"));
while (result.hasNext()) {
Record record = result.next();
System.out.println(record.get("title").asString() + " " + record.get("name").asString());
}
session.close();
driver.close();
Neo4j图数据库的更多相关文章
- Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包
1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...
- Neo4j资料 Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程
课程发布地址 地址: 腾讯课堂<Neo4j 图数据库视频教程> https://ke.qq.com/course/327374?tuin=442d3e14 作者 庞国明,<Neo4j ...
- Neo4j视频教程 Neo4j 图数据库视频教程
课程名称 课程发布地址 地址: 腾讯课堂<Neo4j 图数据库视频教程> https://ke.qq.com/course/327374?tuin=442d3e14 作者 庞国明,< ...
- Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...
- Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu 14.04.4 LTS ...
- Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程
课程发布地址 地址: 腾讯课堂<Neo4j 图数据库视频教程> https://ke.qq.com/course/327374?tuin=442d3e14 作者 庞国明,<Neo4j ...
- Neo4j图数据库从入门到精通
目录 第一章:介绍 Neo4j是什么 Neo4j的特点 Neo4j的优点 第二章:安装 1.环境 2.下载 3.开启远程访问 4.启动 第三章:CQL 1.CQL简介 2.Neo4j CQL命令/条款 ...
- Neo4j图数据库从入门到精通(转)
add by zhj: 转载时,目录没整理好,还会跳转到原文 其实RDB也可以存储多对多的关系,使用的是中间表,GDB使用的是边,RDB中的实体存储在数据表,而GDB存储在节点.两者使用的底层技术不同 ...
- 使用neo4j图数据库的import工具导入数据 -方法和注意事项
背景 最近我在尝试存储知识图谱的过程中,接触到了Neo4j图数据库,这里我摘取了一段Neo4j的简介: Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌 ...
- NEO4J 图数据库使用APOC数据导入
Neo4j 数据导入 一.安装与部署 直接在官网下载安装包安装,解压即可. 二.下载相应的jar包 apoc 包下载链接: https://github.com/neo4j-contrib/ne ...
随机推荐
- PHP数字价格格式化,保留两位小数
number_format(($v['cash']/100),2); demo=>9,271.15
- 修改phpstorm的字体样式和大小
默认的字体实在太小,也太丑,必须修改下.就是强迫症,没错.下面截图配文字说明下 方法/步骤 首先进入设置,不解释 先设置软件界面上的字体.进入设置之后,选择(外观)Appearance.之后软 ...
- 【从零开始】用node搭建一个jsonp&json服务
目录: 一.介绍 二.node安装 三.webstorm配置node环境 四.代码介绍 五.如何使用 六.自定义域名 七.其他 一.介绍 1.背景 日常工作中,跟后端商定好接口格式后:通常采用 ...
- 【原】无脑操作:eclipse + maven搭建SSM框架
网上看到一些Spring + Spring MVC + MyBatis框架的搭建教程,不是很详细或是时间久远了,自己动手整一个简单无脑的! 0.系统环境 1)Windows 10 企业版 2)JDK ...
- Mybatis中使用 #{} 和 ${} 向sql传参时的区别
今天在工作时,使用MyBatis中向sql传递两个参数时,一直显示SQL语法错误,仔细检查,才发现传入的参数被加上了引号,导致传入的参数(要传入的参数是表名)附近出现语法错误. 错误写法: } a } ...
- 自己开源的leaf-snowflake
拜读了美团点评技术团队博客的"Leaf--美团点评分布式ID生成系统(http://tech.meituan.com/MT_Leaf.html)"之后,收获很多.纸上得来终觉浅 绝 ...
- if else的错误用法!
在学习C语言的时候,我们会了解和认识if else 的用法, 并在程序里面使用它来作为判断条件! if(表达式) //先定义一个条件,如果成立,则循环if里面的语句. { 语句 } el ...
- MySQL--当mysqldump --single-transaction遇到alter table
部分生产环境采用mysqldump --single-transaction的方式在夜间进行数据库备份,而同事恰好在备份期间执行了alter table操作,操作部分成功部分失败,为啥呢? 在mysq ...
- Unity-Shader-光照模型之漫反射
[旧博客转移 - 2016年4月3日 23:27] 前面的话: 在现实生活中,我们看见能看见的东西都是光反射出来的颜色,如果反射光太弱,或者没有进入你的视角范围,你看到的就是黑色的. 在游戏中光分为几 ...
- Eclipse 迁移到Android studio
步骤: 1.安装 android-studio-bundle-143.2915827-windows https://developer.android.com/studio/install.html ...