Apache AGE的MATCH子句

news2024/9/22 9:56:11

MATCH子句允许您在数据库中指定查询将搜索的模式。这是检索数据以在查询中使用的主要方法。

通常在MATCH子句之后会跟随一个WHERE子句,以添加用户定义的限制条件到匹配的模式中,以操纵返回的数据集。谓词是模式描述的一部分,不应被视为仅在匹配完成后应用的过滤器。这意味着WHERE应始终与其所属的MATCH子句一起放置。

MATCH可以出现在查询的开头或稍后,可能在WITH之后。如果它是第一个子句,那么尚未绑定任何内容,Cypher将设计一个搜索,以找到与子句中指定的任何关联谓词匹配的结果。此搜索找到的顶点和边将作为已绑定的模式元素可用,并且可以用于子图的模式匹配。它们也可以在任何未来的子句中使用,在那里Cypher将使用已知元素,然后找到进一步的未知元素。

Cypher是一种声明性语言,因此通常查询本身不指定用于执行搜索的算法。WHERE部分中的谓词可以在模式匹配之前、期间或匹配找到之后进行评估。

基本顶点查找

获取所有顶点

通过指定一个带有单个顶点且无标签的模式,将返回图中的所有顶点。

SELECT * FROM cypher('graph_name', $$
MATCH (v)
RETURN v
$$) as (v agtype);

返回数据库中的所有顶点。


v
{id: 0; label: ‘Person’; properties: {name: ‘Charlie Sheen’}}::vertex
{id: 1; label: ‘Person’; properties: {name: ‘Martin Sheen’}}::vertex
{id: 2; label: ‘Person’; properties: {name: ‘Michael Douglas’}}::vertex
{id: 3; label: ‘Person’; properties: {name: ‘Oliver Stone’}}::vertex
{id: 4; label: ‘Person’; properties: {name: ‘Rob Reiner’}}::vertex
{id: 5; label: ‘Movie’; properties: {name: ‘Wall Street’}}::vertex
{id: 6; label: ‘Movie’; properties: {title: ‘The American President’}}::vertex
7 row(s) returned

获取带有标签的所有顶点

使用单个节点模式,其中顶点的标签如下所示:

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH (movie:Movie)
RETURN movie.title
$$) as (title agtype);

返回数据库中的所有电影。

title
‘Wall Street’
‘The American President’
2 row(s) returned

相关顶点

符号-[]-指定了一个边,没有指定边的类型或方向。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH (director {name: 'Oliver Stone'})-[]-(movie)
RETURN movie.title
$$) as (title agtype);

返回由 'Oliver Stone' 导演的所有电影。

plaintextCopy code
title
‘Wall Street’
1 row(s) returned

匹配标签

要在顶点上使用标签来约束模式,请将其添加到模式中的顶点中,使用标签语法。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH (:Person {name: 'Oliver Stone'})-[]-(movie:Movie)
RETURN movie.title
$$) as (title agtype);

返回与标记为 Movie 的 Person 'Oliver' 相连的任何顶点。

plaintextCopy code
title
‘Wall Street’
1 row(s) returned

边的基础

出边

要返回有向边,您可以使用->或<-来指定边指向的方向。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH (:Person {name: 'Oliver Stone'})-[]->(movie)
RETURN movie.title
$$) as (title agtype);

返回与 'Oliver' 通过一条出边相连的任何顶点。

plaintextCopy code
title
‘Wall Street’
1 row(s) returned

有向边和变量

如果需要一个变量,无论是用于过滤边的属性还是用于返回边,请在您希望使用的边或顶点内指定变量。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH (:Person {name: 'Oliver Stone'})-[r]->(movie)
RETURN type(r)
$$) as (title agtype);

返回从 'Oliver' 出发的每条出边的类型。

plaintextCopy code
title
‘DIRECTED’
1 row(s) returned

根据边标签匹配

当您知道要匹配的边标签时,可以通过使用冒号和边标签一起指定它。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH (:Movie {title: 'Wall Street'})<-[:ACTED_IN]-(actor)
RETURN actor.name
$$) as (actors_name agtype);

返回所有 ACTED_IN 'Wall Street' 的演员。

plaintextCopy code
actors_name
‘Charlie Sheen’
‘Martin Sheen’
‘Michael Douglas’
3 row(s) returned

带有变量的边标签匹配

如果要使用变量保存边,并指定要使用的边标签,可以通过同时指定它们来执行。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
MATCH ({title: 'Wall Street'})<-[r:ACTED_IN]-(actor)
RETURN r.role
$$) as (role agtype);

返回 'Wall Street' 的 ACTED_IN 角色。

plaintextCopy code
role
‘Gordon Gekko’
‘Carl Fox’
‘Bud Fox’
3 row(s) returned

多个边

边可以串联在一起以匹配无限数量的边。只要遵循基本模式()-[]-(),用户就可以连接边和顶点以匹配特定模式。

sqlCopy code
SELECT * FROM cypher('graph_name', $$
    MATCH (charlie {name: 'Charlie Sheen'})-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)
    RETURN movie.title, director.name
$$) as (title agtype, name agtype);

返回 'Charlie Sheen' 参演的电影及其导演。

plaintextCopy code
title	name
‘Wall Street’	‘Oliver Stone’
1 row(s) returned

变长边

当两个顶点之间的连接长度可变时,可以使用以下连接返回形成连接的边的列表。

介绍

与在模式中使用许多顶点和边描述来描述长路径不同,可以通过在模式的边描述中指定长度来描述许多边(和中间顶点)。

(u)-[*2]->(v)

描述了一个具有三个顶点和两条边的右定向路径,可以重写为:

(u)-[]->()-[]->(v)

也可以给出范围长度:

(u)-[*3..5]->(v)

相当于:

(u)-[]->()-[]->()-[]->(v) 和 (u)-[]->()-[]->()-[]->()-[]->(v) 和 (u)-[]->()-[]->()-[]->()-[]->()-[]->(v)

前面的示例给出了边的边界值,即 u 和 v 之间的边(和顶点)的较小和较大边界值。这两个绑定值中的任何一个或两个都可以被排除。

(u)-[*3..]->(v)

返回 u 和 v 之间具有三个或更多边的所有路径。

(u)-[*..5]->(v)

返回 u 和 v 之间具有5个或更少边的所有路径。

(u)-[*]->(v)

返回 u 和 v 之间的所有路径。

示例

SELECT * FROM cypher('graph_name', $$
    MATCH p = (actor {name: 'Willam Dafoe'})-[:ACTED_IN*2]-(co_actor)
    RETURN relationships(p)
$$) as (r agtype);

返回边的列表,包括 Willam Dafoe 所参演的电影以及他与两位 Spiderman 演员合作的边。

r
[{id: 0; label:"ACTED_IN"; properties: {role: "Green Goblin"}}::edge, {id: 1; label: "ACTED_IN; properties: {role: "Spiderman", actor: "Toby Maguire}}::edge]
[{id: 0; label:"ACTED_IN"; properties: {role: "Green Goblin"}}::edge, {id: 2; label: "ACTED_IN; properties: {role: "Spiderman", actor: "Andrew Garfield"}}::edge]
2 row(s) returned 

  使用公有云服务

一些公有云的提供了免安装的数据库服务,无需自己部署。以MemFireCloud为例

直接连接

每个MemFire Cloud应用内置一个完整的Postgres数据库,你可以使用任何支持Postgres的工具来连接到数据库。你可以在控制台内的数据库设置中获取连接信息:

  1. 来到左侧菜单栏的 设置部分
  2. 点击数据库
  3. 启用数据库直连
  4. 找到应用的连接信息

开启直连

白名单

MemFire Cloud内置白名单功能,开启白名单后,只允许白名单内的IP地址段访问你的数据库。关闭白名单后,访问你数据库的IP地址不受限制,即任何IP地址只要有连接信息都可以与你的数据库进行直连。 在进行白名单配置时,要遵循CIDR规则。MemFire Cloud中白名单功能 默认是关闭的,需用户手动开启。

配置白名单

通过数据库客户端连接数据库,可以执行图操作

CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;

 

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

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

相关文章

OpenAI训练数据从哪里来、与苹果合作进展如何?“ChatGPT之母”最新回应

7月9日&#xff0c;美国约翰霍普金斯大学公布了对“ChatGPT之母”、OpenAI首席技术官米拉穆拉蒂&#xff08;Mira Murati&#xff09;的采访视频。这场采访时间是6月10日&#xff0c;访谈中&#xff0c;穆拉蒂不仅与主持人讨论了OpenAI与Apple的合作伙伴关系&#xff0c;还深入…

20.x86游戏实战-远线程注入的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

mac M1 创建Mysql8.0容器

MySLQ8.0 拉取m1镜像 docker pull mysql:8.0创建挂载文件夹并且赋予权限 sudo chmod 777 /Users/zhao/software/dockerLocalData/mysql 创建容器并且挂载 docker run --name mysql_8 \-e MYSQL_ROOT_PASSWORDadmin \-v /Users/zhao/software/dockerLocalData/mysql/:/var/l…

2-37 基于matlab的IMU姿态解算

基于matlab的IMU姿态解算,姿态类型为四元数&#xff1b;角速度和线加速度的类型为三维向量。IMU全称是惯性导航系统&#xff0c;主要元件有陀螺仪、加速度计和磁力计。其中陀螺仪可以得到各个轴的加速度&#xff0c;而加速度计能得到x&#xff0c;y&#xff0c;z方向的加速度&a…

PDF小工具poppler

1. 简介 介绍一下一个不错的PDF库poppler。poppler的官网地址在:https://poppler.freedesktop.org/ 它是一个PDF的渲染库,顾名思义,它的用途就是读取PDF文件,然后显示到屏幕(显示到屏幕上只是一种最狭义的应用,包括使用Windows上的GDI技术显示文件内容,当然可以渲染到…

【java】力扣 合法分割的最小下标

文章目录 题目链接题目描述思路代码 题目链接 2780.合法分割的最小下标 题目描述 思路 这道题是摩尔算法的一种扩展 我们先可以找到候选人出来&#xff0c;然后去计算他在左右两边元素出现的次数&#xff0c;只有当他左边时&#xff0c;左边出现的次数2 >左边的长度&…

跨平台WPF音乐商店应用程序

目录 一 简介 二 设计思路 三 源码 一 简介 支持在线检索音乐&#xff0c;支持实时浏览当前收藏的音乐及音乐数据的持久化。 二 设计思路 采用MVVM架构&#xff0c;前后端分离&#xff0c;子界面弹出始终位于主界面的中心。 三 源码 视窗引导启动源码&#xff1a; namesp…

AI、ML、DL 和 DS 之间的区别

人工智能 数据分析 数据科学 深度学习 机器学习 神经网络 在本文中&#xff0c;我们将了解 AI&#xff08;人工智能&#xff09;、ML&#xff08;机器学习&#xff09;、DL&#xff08;深度学习&#xff09;和 DS&#xff08;数据科学&#xff09;之间的区别。这些术语经常互换…

JVM基本知识——运行空间

JVM&#xff08;Java Virtual Machine&#xff09;即Java虚拟机&#xff0c;是负责读取java字节码&#xff0c;并在实际的硬件环境中运行。 JVM可以分为三部分&#xff1a;类装载器&#xff08;ClassLoader&#xff09;子系统、内存空间、执行引擎 内存空间&#xff08;运行时…

数仓建模详解:电商案例解析(第38天)

系列文章目录 一、需求分析 二、数据仓库设计 三、数据集成与处理 四、数据仓库实施与维护 五、实例&#xff1a;电商平台数据仓库建模 六、设计过程中遇到的常见问题有哪些 文章目录 系列文章目录前言常见数仓分层架构图一、需求分析二、数据仓库设计三、数据集成与处理四、数…

海外社媒矩阵为何会被关联?如何IP隔离?

在当今的数字时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。通过社交媒体&#xff0c;人们可以与朋友互动&#xff0c;分享生活&#xff0c;甚至进行业务推广和营销。然而&#xff0c;社交媒体账号关联问题逐渐受到广泛关注。社交媒体账号为何会关联&#…

Spring MVC 的常用注解

RequestMapping 和 RestController注解 上面两个注解&#xff0c;是Spring MCV最常用的注解。 RequestMapping &#xff0c; 他是用来注册接口的路由映射。 路由映射&#xff1a;当一个用户访问url时&#xff0c;将用户的请求对应到某个方法或类的过程叫做路由映射。 Reques…

学习008-01-02 Define the Data Model and Set the Initial Data(定义数据模型并设置初始数据 )

Define the Data Model and Set the Initial Data&#xff08;定义数据模型并设置初始数据 &#xff09; This topic explains how to implement entity classes for your application. It also describes the basics of automatic user interface construction based on a da…

SAP ABAP性能优化分析工具

SAP系统提供了许多性能调优的工具&#xff0c;重点介绍下最常用几种SM50, ST05, SAT等工具&#xff1a; 1.工具概况 1.1 SM50 / SM66 - 工作进程监视器 通过这两个T-code, 可以查看当前SAP AS实例上面的工作进程&#xff0c;当某一工作进程长时间处于running的状态时&#…

现场可重构CPLD芯片应用案例—蓝牙音箱

我司英尚微提供的高性能数模混合现场可重构IC、通用可配置的模数混合芯片内部集成丰富的模拟资源和数字资源&#xff0c;可轻松替代电路中的各种标准器件&#xff0c;并按照客户要求组合成最优小型ASIC&#xff0c;缩短开发周期&#xff0c;降低成本。下面介绍LS98002现场可重构…

Kafka Producer之ACKS应答机制

文章目录 1. 应答机制2. 等级03. 等级14. 等级all5. 设置等级6. ISR 1. 应答机制 异步发送的效率高&#xff0c;但是不安全&#xff0c;同步发送安全&#xff0c;但是效率低。 无论哪一种&#xff0c;有一个关键的步骤叫做回调&#xff0c;也就是ACKS应答机制。 其中ACKS也分…

AQS详解(详细图文)

目录 AQS详解1、AQS简介AbstractQueuedSynchronizer的继承结构和类属性AQS的静态内部类Node总结AQS的实现思想总结AQS的实现原理AQS和锁的关系 2、AQS的核心方法AQS管理共享资源的方式独占方式下&#xff0c;AQS获取资源的流程详解独占方式下&#xff0c;AQS释放资源的流程详解…

Django 请求和响应

1、请求 &#xff08;1&#xff09;get请求 用户直接在浏览器输入网址&#xff0c;参数直接在url中携带 http://127.0.0.1:8000/login/?a1&b%221243%22 &#xff08;2&#xff09;post请求 在html使用post,login.html <!DOCTYPE html> <html lang"en&…

文献阅读:tidyomics 生态系统:增强组学数据分析

文献介绍 文献题目&#xff1a; The tidyomics ecosystem: enhancing omic data analyses 研究团队&#xff1a; Stefano Mangiola&#xff08;澳大利亚沃尔特和伊丽莎霍尔医学研究所&#xff09;、Michael I. Love&#xff08;美国北卡罗来纳大学教堂山分校&#xff09;、Ant…

详细分析Springboot自定义启动界面(附Demo)

目录 前言1. banner.text1.1 配置文件关闭1.2 启动类关闭1.3 命令行关闭 2. 自定义Banner类3. 自动配置类4. 总结 前言 实现自定义启动动画是一项有趣的任务&#xff0c;虽然Spring Boot本身不提供内置的动画功能&#xff0c;但可以通过一些技巧来实现 以下主要以Demo的形式展…