Neo4j入门详细教程
Neo4j安装配置
(1)下载安装包
(2)安装jdk
(3)环境变量配置
分三步,具体参考 https://www.bilibili.com/video/BV1Nz411q7bG?from=search&seid=11789489567953530494
Neo4j常用命令
neo4j install-service # 安装服务
neo4j uninstall-service # 卸载服务
neo4j console # 控制台启动
neo4j start # 启动
neo4j stop # 停止
neo4j restart # 重启
启动成功后访问 http://localhost:7474/browser/ 或者 http://127.0.0.1:7474/browser/
账号密码默认 neo4j
Neo4j相关概念
节点:
节点是图数据库中的一个基本元素,表示一个具体的实体,可以类比成关系数据库中的记录
关系:
关系是图数据库中节点之间的连接,也表示成节点之间的边,neo4j中关系是双向的
属性:
属性是对节点以及关系的一种说明,可以类比成关系数据库中的字段或者列,这里需要强调的是,在图数据库中关系也是可以设计属性的。
标签:
标签(label)是同一类节点的组合,但是并不是在同一标签下的节点一定包含相同属性。
路径:
路径是图数据库建立之后,任意两个节点之间的连通管理,是关系的组合。
cypher语言快速入门
cypher是一种非常简洁的图查询语言,可以在shell与浏览器端直接执行。其基本语法包含以下四个部分:
start:设定查找的起始节点
match:匹配图形模式, 可以定位感兴趣数据的子图形
where:对查询数据进行过滤
limit:限制查询数量
return:返回结果
注意:在新版本的neo4j中start可以省略
CREATE 创建一个节点
使用 Cypher 生成一个小的社交图.
CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
CREATE创建数据的子句()圆括号表示一个节点ee:Person变量 'ee' 和 标签 'Person' 表示新的 节点花括号添加属性到节点
MATCH 查找节点
查找表示 Emil 的节点:
MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
MATCH指定节点和关系的模式的子句(ee:Person)带有标签 "Person" 的单节点模式, 将匹配项赋给变量 "ee"WHERE约束结果的子句ee.name = "Emil"比较 name 属性与 "Emil" 值RETURN用于请求特定结果的子句
ee是变量,通过where查询相匹配的节点,并返回该变量ee
创建更多 节点和关系
CREATE子句可以一次创建多个节点及关系.
MATCH (ee:Person) WHERE ee.name = "Emil"
CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
(ir:Person { name: "Ian", from: "England", title: "author" }),
(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
(rvb)-[:KNOWS]->(ally)
节点和关系
Cypher 采用一对圆括号 () 来表示节点,如 (n:角色) 表示一个 角色 节点,n 是变量名,供命令执行时用 n 来访问这个节点,在命令执行完毕后就无法使用了。同时单独的 () 表示一个匿名节点,在匹配时表示匹配所有节点。
在关系中
--表示无方向的关系-->表示有方向的关系-[r]->则给关系赋予一个变量名,方便对这个关系进行操作-[r:配偶]->匹配关系为配偶的类型
模式匹配 描述在图中查找的内容
例如, 一个用来查找 Emil 的朋友的模式:
MATCH (ee:Person)-[:KNOWS]-(friends)
WHERE ee.name = "Emil" RETURN ee, friends
MATCH用于描述从已知节点到找到的节点的模式的子句(ee)模式以 Person 开始 (由 WHERE 限定)-[:KNOWS]-匹配 "KNOWS 关系 (任意方向)(friends)将绑定为 Emil 的朋友
推荐 使用模式
模式匹配可以用来做推荐. Johan 正在学 冲浪, 因此他想找到一个冲浪的新朋友:
MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer
()空的圆括号表示忽略这些节点DISTINCT因为不止一条路径将与模式匹配surfer将包含 Allison, 一个朋友的朋友, 且冲浪
分析 使用可视化查询计划
要了解查询的工作原理, 可在查询之前加 EXPLAIN 或 PROFILE:
PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer
Cypher入门常用到的语句,推荐!
更多 Cypher 语法内容请查看 https://neo4j.com/docs/cypher-refcard/3.5/
以下为其他内容
Neo4j清空数据
一、用下列 Cypher 语句:
match (n) detach delete n
二、
1、停掉服务;
2、删除 graph.db 目录;
3、重启服务。
少量数据推荐第一种方案,数据量大容易内存溢出,因为是先查出来再删除,所以数据量大推荐第二种方案
关系结构图

有方向关系图

无方向关系图

附一张建好节点关系的图片(*^_^*)

Neo4j入门详细教程的更多相关文章
- ThinkJS框架入门详细教程(二)新手入门项目
一.准备工作 参考前一篇:ThinkJS框架入门详细教程(一)开发环境 安装thinkJS命令 npm install -g think-cli 监测是否安装成功 thinkjs -v 二.创建项目 ...
- spring入门详细教程(五)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(四)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(三)
前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...
- Spring入门详细教程(二)
前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...
- Xcode和github入门详细教程
Xcode和github详细教程! 主要是参考了现在网上的一些资料给没整过的人一个详细的指南. (1)先在github上注册账号,自行解决! (2)在导航栏右上角new一个repository(仓库) ...
- windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)
以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...
- gulp入门详细教程
简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码, ...
- Spring入门详细教程(一)
一.spring概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的 ...
随机推荐
- 2.C++标准库函数:getline函数 定界流输入截取函数 -windows编程
引言:今天工作遇到了一个需要按行读取txt文件数据的需求,查询了一下getline()函数,发现这竟然是一个C++的标准库函数,而且设计的很好,特地做一下记录.getline本质是一个定界流输入截取函 ...
- 【Java面试】介绍下Spring IoC的工作流程
Hi,我是Mic 一个工作了4年的粉丝,在面试的时候遇到一个这样的问题. "介绍一下Spring IOC的工作流程" 他说回答得不是很好,希望我能帮他梳理一下. 关于这个问题,我们 ...
- 你要的几个JS实用工具函数(持续更新)
今天,我们来总结下我们平常使用的工具函数,希望对大家有用.1.封装fetch 源码: /** * 封装fetch函数,用Promise做回调 * @type {{get: (function(*=)) ...
- 实现领域驱动设计 - 使用ABP框架 - 创建实体
用例演示 - 创建实体 本节将演示一些示例用例并讨论可选场景. 创建实体 从实体/聚合根类创建对象是实体生命周期的第一步.聚合/聚合根规则和最佳实践部分建议为Entity类创建一个主构造函数,以保证创 ...
- Linux yum的实现和配置
使用yum或dnf解决rpm包的依赖关系. YUM:Yellowdog Update Modifier.是rpm的前端程序 作用:解决软件包之间的依赖关系 yum工作原理: yum 服务器存放rpm包 ...
- Linux命令格式、终端类型和获取帮助的方法
Linux用户类型 Root用户:超级管理员,权限很大 普通用户:权限有限 终端 terminal 终端类型 物理终端:鼠标.键盘.显示器 虚拟终端:软件模拟出来的终端 控制台终端: /dev/con ...
- 强化学习-学习笔记7 | Sarsa算法原理与推导
Sarsa算法 是 TD算法的一种,之前没有严谨推导过 TD 算法,这一篇就来从数学的角度推导一下 Sarsa 算法.注意,这部分属于 TD算法的延申. 7. Sarsa算法 7.1 推导 TD ta ...
- Hbase学习(三)过滤器 java API
Hbase学习(三)过滤器 HBase 的基本 API,包括增.删.改.查等. 增.删都是相对简单的操作,与传统的 RDBMS 相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根 ...
- 基于SqlSugar的开发框架循序渐进介绍(12)-- 拆分页面模块内容为组件,实现分而治之的处理
在早期的随笔就介绍过,把常规页面的内容拆分为几个不同的组件,如普通的页面,包括列表查询.详细资料查看.新增资料.编辑资料.导入资料等页面场景,这些内容相对比较独立,而有一定的代码量,本篇随笔介绍基于V ...
- 【一本通提高树链剖分】「ZJOI2008」树的统计
[ZJOI2008]树的统计 题目描述 一棵树上有 n n n 个节点,编号分别为 1 1 1 到 n n n,每个节点都有一个权值 w w w. 我们将以下面的形式来要求你对这棵树完成一些操作: I ...