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)--简单入门的更多相关文章

  1. Quartz学习——Quartz简单入门Demo(二)

    要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去. 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两 ...

  2. 安卓学习-- RecyclerView简单入门

    一.加入JAR包 第一感觉这个东东,好复杂,没ListView来的快,方便 在项目中加入android-support-v7-recyclerview.jar包 这个包在extras\android\ ...

  3. LESS 学习记录(简单入门)

    什么是 LESS LESS是一种动态样式语言,属于 CSS 预处理语言的一种.它使用类似 CSS 的语法,但是 赋予了动态语言的特性,比如变量.继承.运算.函数等,方便 CSS 的编写和维护. 使用 ...

  4. gulp学习笔记--简单入门

    一.准备工作 1.gulp是基于nodeJS的前端构建工具,所以全局安装nodeJS 2.利用npm全局安装gulp. npm install -g gulp 3.在项目根目录下新建文件package ...

  5. Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

    一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...

  6. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  7. springboot 学习之路 1(简单入门)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  8. ECharts.js学习(一) 简单入门

    EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Visual Studio里的自带控件,使用比 ...

  9. SpringMVC学习笔记之---简单入门

    SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...

  10. 一、neo4j中文文档-入门指南

    目录 neo4j中文文档-入门指南 Neo4j v4.4 neo4j **Cypher ** 开始使用 Neo4j 1. 安装 Neo4j 2. 文档 图数据库概念 1. 示例图 2.节点 3. 节点 ...

随机推荐

  1. mybatis动态生成sql示例

  2. linux挂载文件服务器

    smbclient -L //192.168.1.1/ -U administrator //直接挂载 使用下面这条命令就行 sudo mount -t cifs -o username=文件服务器账 ...

  3. 简单的理解synchronized锁升级

    前言 今天碰到一个synchronized锁升级的问题, 查了查, 发现一个帖子举例说明比较贴切, 特此转发, 如有问题, 欢迎讨论说明 转自: 木叶盒子 https://www.bilibili.c ...

  4. mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

    问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法: 在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sq ...

  5. pycharm 2021.3版本无法安装unittest

    不用安装unittest包,直接在类后面的括号里黏贴:unittest.TestCase,报错后点击导入unittest包即可.

  6. modbus_tk Rru

    import serialimport structimport loggingimport modbus_tkimport modbus_tk.defines as cstimport modbus ...

  7. Topsis法的python实现

    TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首 ...

  8. Jmeter一、开源软件的崛起

    一.jmeter自身特点: 1.开源,轻量级,更适合自动化和持续集成. 2.学习难度大. 3.资料少.多英文. 二.性能测试工具选型的原则 1.成本: a.工具成本 b.学习成本 2.通信协议: a. ...

  9. MySQL 面试题总结

    MySQL的面试知识点总结 Q1:MySQL 的逻辑架构了解吗? 第一层是服务器层,主要提供连接处理.授权认证.安全等功能. 第二层实现了 MySQL 核心服务功能,包括查询解析.分析.优化.缓存以及 ...

  10. 2023.1.21 app后端pyinstaller启动

    1.打包后会在dist文件夹中暂时生成一个新的文件目录,点击app.exe后也是在这个暂时的文件目录下读取文件的,所以需要以下代码拷贝添加原始项目中的文件 pyinstaller -D app.py ...