Cypher是图形数据库查询语言事实上的标准。

一,Cypher类型系统

Cypher支持的类型系统分为三类:属性类型,复合类型和结构类型。

1,属性类型

属性类型:Integer、Float、String和Boolean

Boolean类型:truefalseTRUEFALSE

String类型:'Hello'"World"

2,复合类型

复合类型:List和Map,List是有序的值的集合,Map是无序的Key/Value对的集合,通常用于存储节点和关系的属性。

List类型:['a', 'b'][1, 2, 3]['a', 2, n.property, $param][ ]

Map类型:n是节点,prop是节点的属性键,引用属性的值的格式:n.prop,

3,结构类型

结构类型:Node类型、关系类型、Path类型:

  • 其中Node类型表示一个节点,由Id、Label和Map构成;
  • 关系类型表示一个关系,由Id、Type、Map和 关系两端的两个节点的Id构成;
  • Path类型表示路径,是节点和关系的序列。Path模式:(a)-->()<--(b)

3,List类型

由标量类型构成的List,例如,['a', 'b'][1, 2, 3]

由函数range函数生成的List对象,例如,range(0,10),从start到end的有序数字,Range函数包含两端。

列表(List comprehension):[x IN range(0,10) WHERE x % 2 = 0 | x^3]

4,Map类型

列表的常量表示:{ key: 'Value', listKey: [{ inner: 'Map1' }, { inner: 'Map2' }]}

Map投影,用于从节点、关系和其他Map对象中投影特定元素或变量的值,Map投影的格式是:

map_variable {map_element, [, …​n]}

参数注释:

  • map_variable:用于引用Map对象
  • map_element 有四种格式是:

    • 属性选择器:格式是 .Key,用于引用Map对象中的属性
    • 嵌入属性(Literal entry),是一个Key/Value对,例如,key: <expression>,表示嵌入到Map变量中的元素
    • 变量选择器:把一个变量的名称作为Key,变量的值作为Key的值,构建一个Key/Value对,作为Map变量中的元素
    • 属性全选符号: .*

Map投影的示例,actor是Map变量,nrOfMovies是变量,从Map变量中获取name属性,并添加额外的属性nrOfMovies:

MATCH (actor:Person)-[:ACTED_IN]->(movie:Movie)
WITH actor, count(movie) AS nrOfMovies
RETURN actor { .name, nrOfMovies }

二,命名规则和作用域

对变量进行命名,变量的命名要遵守一定的规则,并且变量具有特定的作用域。

1,命名规则

名称以英语字符开头,能够包含数字,但是数字不能作为首字符,除了下划线和$,不能包含其他符号,

注意,下划线应用于名称的中间或结尾,例如,my_variable,$符号只能用于名称的开头,标示一个参数,例如$myParam。

名称是大小写敏感的,:PERSON 和 :Person 是不同的。

2,作用域

节点的Lable、关系类型和属性键是不同的作用域(Scope),在相同的Scope下,名称是不允许重复的;但是,在不同的Scope中,名称是允许重复的,并且表示不同的含义。

CREATE (a:a {a: 'a'})-[r:a]→(b:a {a: 'a'})

三,CASE表达式

case表达式根据条件对查询的结果进行处理:

CASE
WHEN predicate THEN result
[WHEN ...]
[ELSE default]
END

四,查询的参数

参与的语法是$Param,参数的名称是Param,在传递参数时,必须保证传递的参数和Query中的参数名称相同。

有Cypher的Query是,参数是$ids,

MATCH (n)
WHERE id(n) IN $ids
RETURN n.name

传递给Query的参数是:

{
"ids" : [ , , ]
}

五,操作符

操作符是对Cypher查询进行算术运算,逻辑运算等。

1,通用操作符

distinct 用于移除重复值, n.property 用于访问属性,[]是变量的列表

CREATE (a:Person { name: 'Anne', eyeColor: 'blue' }),(b:Person { name: 'Bill', eyeColor: 'brown' }),(c:Person { name: 'Carol', eyeColor: 'blue' })
WITH [a, b, c] AS ps
UNWIND ps AS p
RETURN DISTINCT p.eyeColor

2,数学操作符

  • 加减乘除:+,-,*,/
  • 取模:%
  • 取幂:^

3,比较运算符

  • 等于:=
  • 不等于:<>
  • 小于、大于、小于等于、大于等于:<、>、<=、>=
  • IS NULL和 IS NOT NULL

4,逻辑运算符

与(AND),或(OR),异或(XOR),非(NOT)

WITH [, , , , ] AS numberlist
UNWIND numberlist AS number
WITH number
WHERE number = OR (number > AND number < )
RETURN number

5,字符串

字符串拼接:+

匹配正则:=~

WITH ['mouse', 'chair', 'door', 'house'] AS wordlist
UNWIND wordlist AS word
WITH word
WHERE word =~ '.*ous.*'
RETURN word

对于字符串,使用 STARTS WITH、ENDS WITH和CONTAINS 过滤字符串:

WITH ['John', 'Mark', 'Jonathan', 'Bill'] AS somenames
UNWIND somenames AS names
WITH names AS candidate
WHERE candidate STARTS WITH 'Jo'
RETURN candidate

6,列表操作

  • +,列表追加
  • IN:检查成员
  • []:索引,特殊地,[start .. end],从start开始,递增1,但是不包括end
RETURN [,,,,]+[,] AS myList

WITH [, , , ] AS numberlist
UNWIND numberlist AS number
WITH number
WHERE number IN [, , ]
RETURN number WITH ['Anne', 'John', 'Bill', 'Diane', 'Eve'] AS names
RETURN names[..] AS result

7,访问属性

使用 . 号访问属性

MATCH (n) WHERE  < n.age AND n.age <=  RETURN n

参考文档:

Cypher Syntax

Neo4j 第六篇:Cypher语法的更多相关文章

  1. Neo4j 第三篇:Cypher查询入门

    本文转载自:https://www.cnblogs.com/ljhdo/p/5516793.html Neo4j使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大,由 ...

  2. Neo4j Cypher语法(一)

    目录 Cypher手册详解 1 背景 2 唯一性 3 语法 3.1 命名规则 3.2 表达式 3.3 变量与保留关键字 3.4 参数 3.5 操作符 3.6 模式 3.7 列表 Cypher手册详解 ...

  3. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  4. Neo4j Cypher语法(三)

    目录 5 函数 5.1 谓词函数 5.2 标量函数 5.3 聚合函数 5.4 列表函数 5.5 数学函数 5.6 字符串函数 5.7 Udf与用户自定义函数 6 模式 6.1 索引 6.2 限制 7 ...

  5. 第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  6. 【译】第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  7. Python入门篇-基础语法

    Python入门篇-基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编程基础 1>.程序 一组能让计算机识别和执行的指令. 程序 >.算法+ 数据结构= 程 ...

  8. .net 开源模板引擎jntemplate 教程:基础篇之语法

    一.基本概念 上一篇我们简单的介绍了jntemplate并写了一个hello world(如果没有看过的,点击查看),本文将继续介绍jntemplate的模板语法. 我们在讲解语法前,首先要了解一下标 ...

  9. 鸿蒙内核源码分析(GN应用篇) | GN语法及在鸿蒙的使用 | 百篇博客分析OpenHarmony源码 | v60.01

    百篇博客系列篇.本篇为: v60.xx 鸿蒙内核源码分析(gn应用篇) | gn语法及在鸿蒙的使用 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...

随机推荐

  1. myeclipse 导入项目时no projects are found to import解决办法

    myeclipse 识别一个工程需要.classpath与.project文件,一般无需提交SVN所以项目切下来的时候是没有这两个文件的. 方法1: 1) 在myeclipse中新建一个和你要导入的项 ...

  2. MYSQL 注射精华

    前言鄙人今天心血来潮突然想写篇文章,鄙人从来没写过文章,如果有错误的地方请多多指教.本文需要有基础的SQL语句知识才可以更好的理解.建议想学习的人多去了解一下SQL语句和编程语言,知己知彼才能百战百胜 ...

  3. CF-1099 D. Sum in the tree

    CF-1099 D. Sum in the tree 题意:结点序号为 1~n 的一个有根树,根序号为1,每个点有一个权值a[i], 然后定义一s[i]表示从根节点到 结点序号为i的结点的路途上所经过 ...

  4. shell进阶

    shell 中的高级用法 1.if 单重判断 if cmd; then cmd cmd cmd fi 多重判断 单分支 if cmd;then cmd elif cmd fi 双分支 if cmd; ...

  5. 自动化运维工具Ansible

    一.简介 当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务 ...

  6. perl学习之:函数总结

    一.进程处理函数 1.进程启动函数 函数名 eval 调用语法 eval(string) 解说 将string看作Perl语句执行.正确执行后,系统变量$@为空串,如果有错误,$@中为错误信息. 例子 ...

  7. poj 1502

    MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12087   Accepted: 7464 De ...

  8. Bin Paking Problem:简单的构造性算法

    *本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 目录 BL和BLF算法 BF算法 HR算法 PH算法

  9. 打印 Python 的一切 —— pprint & beeprint

    打印,是所有程序员从小白时期就具备的神技,遇事不决打印一下,是 DEBUG 最简单且不依赖 IDE 的方式,自定义各种日志输出,也是项目成型后必备功能.但是为了优雅的打印格式,往往需要对各种对象进行特 ...

  10. 1,python初识

    什么是变量? 变量:将程序的中间结果暂时存储起来,以便后续程序调用. 什么是字符串类型? python中被引号引起来的数据就是字符串.字符串类型,也简称str类型. 在python中 int是什么? ...