neo4j使用详解(二、cypher语法基础——最全参考)

在这里插入图片描述

1.简介

Cypher是一种声明式图数据库查询语言,它具有丰富的表现力,能高效地查询和更新图数据。具有以下特点:

  • 是一种声明性模式匹配语言
  • 遵循SQL语法
  • 的语法是非常简单且人性化、可读的格式
    语法详情请看博主其他博客:
    一、cypher插入语法
    二、 cypher查询语法
    三、cypher通用语法

2.模式

使用模式可以描述你期望看到的数据的形状,当用模式描述一个形状的时候,Cypher将按照模式来获取相应的数据。

模式类型语法含义
节点(点)(n)节点使用一对圆括号表示,然后中间含一个名字
关系(边)(a)->(b),(a)<-(b),(a)-(b)使用箭头来表达两个节点之间的关系,不关心关系的方向,则箭头的头部可以省略
标签(a:User)
属性(a {name:'v1',sport:'s1'})使用键值对的映射结构来表达,然后用大括号包起来

变长模式匹配:

描述指定长度的关系,描述了三个节点两个关系:

(a)-[*2]->(b) # 等价于(a)-->()-->(b)

长度范围也可以指定,如最短为3,最长为5:

(a)-[*3..5]->(b)

至少三个关系:

(a)-[*3..]->(b)

最多5个关系:

(a)-[*..5]->(b)

任意长度的关系:

(a)-[*]->(b)

图数据库与关系型数据库的类比:

图数据关系型数据库
点标签表名
点属性表字段
点数据(标签+属性键值对)表的一行数据
相同标签的点数据表的所有数据
关系常用一列专门来描述(如树结构)

3.变量

当需要引用模式(pattern)或者查询的某一部分的时候,可以对其进行命名。针对不同部分的这些命名被称为变量。

match (n)-[r]->(b) return b # 这里的n和b和r就是变量

4.关键字

关键字大小写不敏感,变量名大小写敏感,语法关键字主要分为三类:

4.1.插入关键字:(详细讲解)

关键字含义
create创建节点或关系
merge匹配不到则创建
set更新节点的标签以及节点和关系的属性
delete删除土元素(节点、关系、路径)
remove删除图元素的属性和标签
foreachcypher提供的一种列表遍历工具,主要用来做增删改
create unique相当于match和create的混合体
(尽可能地匹配,然后创建未匹配到的创建)
load csv(import)用于导入csv文件

4.2.查询关键字:(详细讲解)

关键字含义
match匹配(查询)已有数据
optional match与match类似,只是如果没有匹配上,则将使用null作为没有匹配上的模式。类似于SQL中的外连接。
where类似SQL中的添加查询条件
startSTART语句仅用于访问neo4j遗留的索引(节点或者关系的索引)
aggregation(count、sum、avg…)聚合函数

4.3.通用关键字:(详细讲解)

关键字含义
return返回结果
order by排序,紧跟RETURN或者WITH
limit限制输出的行数
skip从哪行开始返回结果
with向后面的语句传递指定结果
unwindcypher提供的一种列表遍历工具,结合case等语法可以写出许多复杂的查询,尤其是对于路径查询的处理
union/union all并集(去重/不去重)
call执行子查询并返回结果,版本4.x后支持

5.数据类型

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

5.1.属性类型

名称类型
数值int,float…
字符string
布尔Boolean
空间Point
时间Date,Time,LocalTime,DateTime,LocalDateTime和Duration

5.2.结构类型

名称类型
节点(点)Node,包含Id**, Labels, Map类型
关系(边)Relationship,包含Type, Map, Id类型
路径Path,节点和关系的序列

5.3.复合类型

名称类型
列表List
字典Map,组成为(key, value)对,key是字符类型,value可以是属性类型, 结构类型和符合类型

6.运算符

neo4j中运算符与关系型数据库差不多,不过也有不同和需要注意的点

6.1.比较运算

=, <>, <, >, <=, >=, is null, is not null

  • 不同类型不能比较,例如点和边和路径不能互相比较
  • List比较时,只有所有对应元素都相等列表才相等
  • Map比较时,只有Map的键相等且其指向的值也相等时才相等
  • 路径比较时,只有路径上所有的点和边都相等时才相等
  • 和null比较的结果还是null

6.2.字符串比较运算

  • start with: 匹配前缀
  • ends with: 匹配后缀
  • constant: 字符串包含

6.3.字符串运算

  • 字符串连接: “+”
  • 正则匹配: “=~”

6.4.时间运算

  • +, -: Duration与时间实例/Duration
  • *, /:Duration与一个数字

6.5.List运算

  • List链接: +

    return [1,2,3,4,5]+[6,7] as myList

  • List判断e是否在List中: e in List

    with [2, 3, 4, 5] as numberList unwind numberList AS number with number where number in [2, 3, 8] return number

  • 动态获取其中元素: []

    with ['Anne', 'John', 'Bill', 'Diane', 'Eve'] as names return names[1..3] as result

6.6.Map运算

  • 静态获取Map的value: 使用点运算符

    with {name: 'Anne', age: 25 } as n return n.name

  • 动态获取Map的value: 使用[]

    with {name: 'Anne', age: 25 } as n return n[$myKey] as result

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS——9大陷阱

一、警惕A>X>B写法 3>2>1 返回值为false&#xff08;原因&#xff1a;3>2为true&#xff0c;会默认转成数字1&#xff0c;1>1为false&#xff09; 1<4<3 返回值为true&#xff08;原因&#xff1a;1<4为true&#xff0c;会默认转成数字1&#xff…

Leetcode第35题:搜索插入位置

代码实现 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:if target in nums:return nums.index(target)index0for num in nums:if target>num:index1else:nums.insert(index,target)breakreturn index解题思路:先判断target是否在nums中…

【简单随机抽样】

文章目录 什么是简单随机抽样&#xff1f;简单随机抽样的步骤简单随机抽样的优点简单随机抽样的缺点 什么是简单随机抽样&#xff1f; 简单随机抽样是指从总体中以相同的概率随机选择一定数量的样本单元组成样本的一种方法。它要求每个样本单元被抽中的机会是均等的。每一个样…

滴滴出行高级Node.js开发工程师笔试题2024

今天参加了一个滴滴出行的Node.js岗位面试&#xff0c;一面为腾讯视频面试&#xff0c;俩个面试官。面试官比较深入问一些你过去做个的项目&#xff0c;问你解决了哪些棘手的问题。 还有就是他们比较关注性能优化&#xff0c;会问你们现在项目的峰值QPS是多少&#xff0c;如何进…

ChatGPT之道:AI与编程的完美融合

ChatGPT无限次数:点击直达 ChatGPT之道&#xff1a;AI与编程的完美融合 引言 随着人工智能技术的发展&#xff0c;AI在各个领域都展现出了惊人的应用潜力。在编程领域&#xff0c;AI的应用也是愈发广泛。其中&#xff0c;ChatGPT作为一种基于大型神经网络的自然语言生成模型&…

2024第二届经济管理、贸易与信息技术创新国际会议(ICEMITI2024)

2024第二届经济管理、贸易与信息技术创新国际会议&#xff08;ICEMITI2024&#xff09; 会议简介 2024第二届经济管理、贸易与信息技术创新国际会议&#xff08;ICEMITI2024&#xff09;将在中国郑州举行。这是一个重要的学术会议&#xff0c;旨在讨论当前经济管理、贸易和信…

[DDD] ValueObject的一种设计落地及应用

目录 前言一、ValueObject二、设计2.1 接口2.2 单一值ValueObject2.3 单一字符串ValueObject 三、实现3.1 示例3.1.1 PhoneNumber3.1.2 SocialCreditCode 四、使用4.1 异常处理4.2 Json 反/序列化4.2.1 请求体4.2.2 HTTP接口4.2.3 用例 4.3 JPA/MyBatis4.3.1 Converter或TypeHa…

vue响应式基础

声明响应式状态​ ref()​ 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff1a; import { ref } from vueconst count ref(0) ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回&#xff1a; const count ref(0)c…

202449读书笔记|《悦读诗 乐生活》——跌倒,是生活的偶然 发光,是生命的态度

202449读书笔记|《悦读诗 乐生活》——跌倒&#xff0c;是生活的偶然 发光&#xff0c;是生命的态度 第一篇 全都喜欢上第二篇 生如夏花第三篇 “希望”是带有羽毛之物第四篇 我来到这世界…… 《悦读诗 乐生活&#xff1a;小学生经典现代诗歌鉴赏集》赵迁编著&#xff0c;是小…

【JavaEE初阶系列】——多线程案例三——定时器

目录 &#x1f6a9;定时器是什么 &#x1f6a9;标准库中的定时器 &#x1f6a9;自定义定时器 &#x1f388;构造Task类 &#x1f4dd;相对时间和绝对时间 &#x1f388;构造MyTime类 &#x1f4dd;队列空和队列不为空 &#x1f4dd;wait(带参)解决消耗资源问题 &#…

多列数据表,复制插入一条有唯一索引限制的数据

假如你有一张表&#xff08;列简单列举四个&#xff0c;实际可能十好几二十好几的字段&#xff09; idnameagesex1zhangsan10男2lisi20男3wangermazi30男4xiaotaoqi40男 你想复制id4的数据&#xff0c;只把id变为6其他信息不变&#xff0c;来给自己用&#xff0c;只有主键变更…

docker配置镜像加速后容器和镜像消失

一、问题描述 根据阿里云给docker配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://gt6j98xi.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl rest…

NO9 蓝桥杯单片机串口通信之进阶版

1 回顾 串口通信的代码编写结构还是与中断一样&#xff0c;不同的是&#xff1a; 初始中断函数条件涉及到串口通信相关的寄存器和定时器1相关的寄存器&#xff08;定时器1用于产生波特率&#xff09;&#xff0c;但初始条件中的中断寄存器只考虑串口通信而不考虑定时器1。 v…

基于springboot+vue+Mysql的网上图书商城

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

多功能的RSS工具RSS Funnel

什么是 RSS Funnel &#xff1f; RSS Funnel 是一个模块化的 RSS 处理管道系统。它可以以多种方式操作 RSS/Atom 源。 例如&#xff1a; 提取完整内容从 HTML 页面生成 RSS 订阅删除不需要的元素和文本使用正则表达式进行文字编辑或替换保留或删除与关键词或模式匹配的文章突出…

微服务篇:设计一个注册中心和配置中心需要从哪些方面入手

注册中心 设计一个注册中心时&#xff0c;需要关注多个关键方面&#xff0c;以确保其稳定性、可靠性、性能和可扩展性。以下是一些重要的考虑因素&#xff1a; 服务发现机制&#xff1a;注册中心的核心功能是允许服务相互发现。这意味着当一个服务实例启动时&#xff0c;它需…

2024年【熔化焊接与热切割】考试报名及熔化焊接与热切割找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新熔化焊接与热切割找解析题目及答案&#xff01;多做几遍&#xff0c;其实通过熔化焊接与热切割实操考试视频很简单。 1、【单选题】 下…

SE注意力模块学习笔记《Squeeze-and-Excitation Networks》

Squeeze-and-Excitation Networks 摘要引言什么是全局平均池化&#xff1f; 相关工作Deep architectures Squeeze-and-Excitation Blocks3.1. Squeeze: Global Information Embedding3.2. Excitation: Adaptive Recalibration3.3. Exemplars: SE-Inception and SE-ResNet 5. Im…

docker部署nacos(单机与集群)

拉去nacos镜像 [rootlocalhost keepalived]# docker search nacos NAME DESCRIPTION STARS OFFICIAL nacos/nacos-server This project contains a Docker image meant t… 464 …

2024.3.26学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p273-p285 包 包的本质实际上就是创建不同的文件夹/目录来保存类文件 包的三大作用 区分相同名字的类 当类很多时&#xff0c;可以很好的管理类 控制访问范围 包的基本语法 package com.xx…