Neo4j学习(2)--简单入门
1.Neo4j属性图数据模型
节点:包含多个属性和标签。一个节点就是一条数据
属性:键值对形式
关系:单向与双向,连接节点,也可包含多个属性和标签
标签:表示节点和关系的类型,可以有多个,同时可以通过标签来分组,Neo4j的内置功能,在查询和模式索引更高效
2.Neo4j--Cypher
官方对Cypher的介绍:

(以下为自己的直译)
Cypher由于它在查询修改图形上的高展示与高效率,使得它成为图形的操作首选语言。Cypher自己本身语法简单,并且功能强大,再复杂的数据库查询语句也能用Cypher简单的展示,这就让我们不必再去纠结数据库语句的复杂性,更能让我们专注于需要展示的数据上。
Cypher的语法借鉴的是Haskell和Python等,同时它的好多关键字都是我们熟悉的SQL关键字。Cypher在书写上跟英语的书写一样,这样看起来更简单。
关于Cypher的介绍,可以看看官方文档,描述的很详细。
Cypher 语法不区分大小写。
Cypher简单语法入门:
1> create命令 create(<nodeName:labelName { propertyName1:propertyValue1, propertyName2:propertyValue2,...})
nodeName:创建的节点名称
labelName:创建的节点标签名称
propertyName:节点属性名称
propertyValue:节点属性值
都是以键值对形式书写。
例:
创建无属性的节点:create(a:A)
创建由属性的节点:create(user:User{name:"zhangsan"})
2> match & return 命令 match(nodeName:lableName) return nodeName.propertyName1, nodeName.propertyName2,.....
注意match必须和return一起使用,否则单独使用会报错。

例:
查询user节点中的name属性: match(user:User) return user.name
查询user节点的数据:match(user:User) return user

3> 节点之间关系的创建命令 箭头标记(->)
1️⃣使用现有节点创建无属性的关系
语法:
match (nodeName1:labelName1), (ndeName2:labelName2)
create (nodeName1)-[relationshipName:relationshipLabel]->(nodeName2)
return relationshipLabel
其中:
nodeName1:从节点名(FORM) labelName1:从节点标签名
nodeName2:到节点名(TO) labelName2:到节点标签名
relationshipName: 关系名称 relationshipLabel:关系标签名
例:
创建客户和信用卡之间的关系(客户和信用卡的节点已经创建)
match (e:Customer),(cc:CreditCard)
create (e)-[r:DO_SHOPPING_WITH]->(cc)
2️⃣使用现有节点创建由属性的关系
语法:
match (nodeName1:labelName1), (ndeName2:labelName2)
create (nodeName1)-
[relationshipName:relationshipLabel{propertyName1:propertyValue1,propertyName2:propertyValue2,....}]
->(nodeName2)
return relationshipLabel
其中:关系属性也是用键值对表示
propertyName:关系的属性名 propertyValue:关系的属性值
例:
为标签为DO_SHOPPING_WITH的关系增加shopdate和price属性:
match (e:Customer),(cc:CreditCard)
create (e)-[r:DO_SHOPPING_WITH{shopdate:"11/30/2018",price:55000}]->(cc)
return r
3️⃣使用新节点创建无属性的关系
语法:
create (nodeName1:nodeLabel1)-[relationshipName:relationshipLabel]->(nodeName2:nodeLabel2)
return relationshipName
其中,return子句可以省略。
例:
创建boy与girl两个节点,关系为girl_friend
create (boy:Boy)-[r:GIRL_FIREND]->(girl:Girl)
return r
4️⃣使用新节点创建由属性的关系
语法:
create (nodeName1:nodeLabel1{propertyName:propertyVaule,...})-
[relationshipName:relationshipLabel{propertyName:propertyVaule,...}]->
(nodeName2:nodeLabel2{propertyName:propertyVaule,...})
return relationshipName
例:
根据上面的boy和girl,创建李雷和韩梅梅,关系的属性为date
create(boy:Boy{name:"李雷"})-[r:GIRL_FRIEND{date:"11/30/2018"}]->(girl:Girl{name:"韩梅梅"})
5️⃣查询关系节点的详细信息
语法:
match (nodeName1)-[relationshipName:relationshipLabel]->(nodeName2)
return relationshipName
例:
查询上面创建的girl_friend关系
match(boy)-[r:GIRL_FRIEND]->(girl) return r
4>where子句 用来过滤查询,与sql中的where一样
语法:
where nodeName.propertyName OPERATIRON value
例:
match(user:User) where user.name = "John Johson" return user
5> delete命令
语法:
删除节点:
delete nodeName1,nodeName2,....
删除节点以及关系:
delete nodeName detach delete nodeName
例:
match (a:A) delete a
删除一个节点以及其所有的关系
match (e:Customer) detach delete e
6> remove命令 用来删除属性和标签
语法:
remove nodeName.propertyName,....
如果要同时删除属性和标签的话,需要用.句号来分隔。
例:
先创建一个book节点:CREATE (book:Book {id:122,title:"Neo4j Tutorial",pages:340,price:250})
删除price属性:
match (book:Book) remove book.price return book
删除标签:
match(b:B) remove b:B
7> set命令
向节点或者关系添加新属性
例:
向book 增加price :

8> order by 命令 同sql ,默认升序展示

9> union和 union all 同SQL union 交集 union all 并集
10> limit 命令 现在查询展示条数
MATCH (n) RETURN n LIMIT 25
11> merge 合并 in 操作符
MATCH (gp1:GoogleProfile1) RETURN gp1.Id,gp1.Name
MATCH (e:Employee) WHERE e.id IN [123,124] RETURN e.id,e.name,e.sal,e.deptno
----------------------------------------------------------------------------------------------------
参考:1.Neo4j官网资料 https://neo4j.com
2.W3CSchool
3.http://neo4j.com.cn/
Neo4j学习(2)--简单入门的更多相关文章
- Quartz学习——Quartz简单入门Demo(二)
要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去. 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两 ...
- 安卓学习-- RecyclerView简单入门
一.加入JAR包 第一感觉这个东东,好复杂,没ListView来的快,方便 在项目中加入android-support-v7-recyclerview.jar包 这个包在extras\android\ ...
- LESS 学习记录(简单入门)
什么是 LESS LESS是一种动态样式语言,属于 CSS 预处理语言的一种.它使用类似 CSS 的语法,但是 赋予了动态语言的特性,比如变量.继承.运算.函数等,方便 CSS 的编写和维护. 使用 ...
- gulp学习笔记--简单入门
一.准备工作 1.gulp是基于nodeJS的前端构建工具,所以全局安装nodeJS 2.利用npm全局安装gulp. npm install -g gulp 3.在项目根目录下新建文件package ...
- Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门
一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...
- MyBatis学习总结(一)简单入门案例
MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- ECharts.js学习(一) 简单入门
EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart 这个是Visual Studio里的自带控件,使用比 ...
- SpringMVC学习笔记之---简单入门
SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...
- 一、neo4j中文文档-入门指南
目录 neo4j中文文档-入门指南 Neo4j v4.4 neo4j **Cypher ** 开始使用 Neo4j 1. 安装 Neo4j 2. 文档 图数据库概念 1. 示例图 2.节点 3. 节点 ...
随机推荐
- js实现不同的域名 输出不同的结果
js实现域名判断后跳转到指定网址,也适用于同一虚拟空间放多个网站: <script> try { if(self.location == "http://apple.baidu. ...
- 宝塔面板Nginx开启gzip,提高网站访问速度的方法
这篇文章主要为大家详细介绍了宝塔面板Nginx开启gzip,提高网站访问速度的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 最近有用户问小编说在宝塔面板N ...
- MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
1. 排名分类 1.1 区别RANK,DENSE_RANK和ROW_NUMBER RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名. DENSE_RAN ...
- jdk版本与项目依赖jar包不兼容
这两天出现了一个 java.lang.RuntimeException: java.io.IOException: invalid constant type: 18 tomcat启动出现这个问题的原 ...
- 服务器新建分支,vscode检测不到
执行 git remote update origin 命令,刷新远程分支
- holiday08
第八天 管道 linux允许将 一个命令的输出 可以 通过管道 作为 另一个命令的输入 ls -lh | more 可以理解现实生活中的管子,管子一头塞东西进去,另一头取出来,这里 | 的左右分为两端 ...
- 操作系统 linux
- POJ--2689-C++
题意很简单就是让你求给定区间的素数,然后用一个循环求出相距最远的相邻素数数和最近的素数以及相距最近的相邻素数 难点在与数据很大,所以不可能直接对区间的每一个数进行素数判断.但是,每个合数n都至少有一个 ...
- mysql安装及可视化界面
Mysql下载安装 官网下载链接 https://dev.mysql.com/downloads/mysql/ 可以选择之前的版本 我一开始下的8.0.21但安装的时候报错说找不到VCRUNTIME1 ...
- esxi的一些命令
今天本想在vcenter上建个分布式交换机,没想到在迁移主机端口时,由于主机只连了一个物理网卡,导致在迁移到分布式交换机而失去连接,几近周折,从网上找了几篇不错的文章,与众同乐 假如一台ESX主机先通 ...