AGE 在CTE表达式中使用Cypher

在使用CTE(公共表达式)时,没有对使用Cypher的限制。

查询:

WITH graph_query as (SELECT *FROM cypher('graph_name', $$MATCH (n)RETURN n.name, n.age$$) as (name agtype, age agtype)
)
SELECT * FROM graph_query;

结果:

name	age
‘Andres’	36
‘Tobias’	25
‘Peter’	35
3 row(s) returned

在Join表达式中使用Cypher

Cypher查询可以是JOIN子句的一部分。

开发者注意事项 使用CREATE、SET、REMOVE子句的Cypher查询不能在带有JOIN的SQL查询中使用,因为它们会影响Postgres事务系统。一个可能的解决方案是使用CTE来保护查询。有关更多详细信息,请参阅“使用CTE与CREATE、REMOVE和SET”子节。

查询:

SELECT id, graph_query.name = t.name as names_match,graph_query.age = t.age as ages_match
FROM schema_name.sql_person AS t
JOIN cypher('graph_name', $$MATCH (n:Person)RETURN n.name, n.age, id(n)
$$) as graph_query(name agtype, age agtype, id agtype)
ON t.person_id = graph_query.id

结果:

id	names_match	ages_match
1	True	True
2	False	True
3	True	False
3 row(s) returned

SQL表达式中的Cypher

Cypher不能在表达式中使用—查询必须存在于查询的FROM子句中。但是,如果将Cypher查询放置在子查询中,它将像任何SQL样式查询一样工作。

使用Cypher和‘=’

当编写已知返回一列和一行的cypher查询时,可以使用‘=’比较运算符。

查询:

SELECT t.name FROM schema_name.sql_person AS t
where t.name = (SELECT aFROM cypher('graph_name', $$MATCH (v)RETURN v.name$$) as (name varchar(50))ORDER BY nameLIMIT 1);

结果:

name	age
‘Andres’	36
3 row(s) returned

使用Postgres的IN子句

当编写已知返回一列但可能有多行的cypher查询时,可以使用IN运算符。

查询:

SELECT t.name, t.age FROM schema_name.sql_person as t 
where t.name in (SELECT *FROM cypher('graph_name', $$MATCH (v:Person)RETURN v.name $$) as (a agtype));

结果:

name	age
‘Andres’	36
‘Tobias’	25
‘Peter’	35
3 row(s) returned

使用Postgres的EXISTS子句

当编写可能返回多个列和行的cypher查询时,可以使用EXISTS运算符。

查询:

SELECT t.name, t.age
FROM schema_name.sql_person as t
WHERE EXISTS (SELECT *FROM cypher('graph_name', $$MATCH (v:Person)RETURN v.name, v.age$$) as (name agtype, age agtype)WHERE name = t.name AND age = t.age
);

结果:

name	age
‘Andres’	36
‘Tobias’	25
3 row(s) returned

查询多个图

SQL语句可以查询多个图,没有限制。用户可以同时查询多个图。

查询:

SELECT graph_1.name, graph_1.age, graph_2.license_number
FROM cypher('graph_1', $$MATCH (v:Person)RETURN v.name, v.age
$$) as graph_1(col_1 agtype, col_2 agtype, col_3 agtype)
JOIN cypher('graph_2', $$MATCH (v:Doctor)RETURN v.name, v.license_number
$$) as graph_2(name agtype, license_number agtype)
ON graph_1.name = graph_2.name

结果:

name	age	license_number
‘Andres’	36	1234567890
3 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.mzph.cn/diannao/45470.shtml

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

相关文章

【Linux】进程7——查看进程

1.为什么进程管理这么重要呢? 这是因为: 首先,我们在操作系统时的各项任务其实都是经过某个PID来完成的(包括你的bash环境),因此,能不能执行某项任务,就与该进程的权限有关了。再来…

centos切换python默认版本的最简单步骤(随手记)

centos8默认安装的python版本是python3.6,当需要更高版本的python3.9或3.11时,我们经常搜索到源码安装然后编写软连接。 [rootmanager Python-3.9.0]# python3 --version Python 3.6.8 [rootmanager Python-3.9.0]# pip3 --version pip 9.0.3 from /usr…

RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化

接前一篇:RAG实践:ES混合搜索BM25+kNN(cosine) https://blog.csdn.net/Xin_101/article/details/140230948 本文主要讲解混合搜索相关理论以及计算推导过程, 包括BM25、kNN以及ES中使用混合搜索分数计算过程。 详细讲解: (1)ES中如何通过BM25计算关键词搜索分数; (2)…

SpringBoot注解--11--@JSONField @JsonProperty

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一个问题:后端实体类isXXX开头的属性,传到前端后自动去掉is解决方法: JsonProperty和JSONField1.简介2.注解的区别2.1 底层框架不…

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日,在2024世界人工智能大会上,容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上,容联云发布了容犀智能大模型应用升级,该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…

python库(12):Requests库实现HTTP请求

1 Requests库 Requests是一个极为流行的HTTP库,它允许你发送各种类型的HTTP请求。无论是GET、POST、PUT、DELETE还是其他类型的请求,Requests都能轻松搞定。 虽然还有其他HTTP库,但Requests库以其简洁的API和人性化的设计脱颖而出。它隐藏了…

寻找赛灵思IP核手册的办法

一、先google找到大家看的手册都是什么样的 二、在AMD技术手册网站搜索手册的名称 网址:AMD Technical Information Portal

科普文:spring boot中常用的接口、工具栏、注解整理

1.springboot 常用接口 1.1 Aware接口 Spring IOC容器中 Bean是感知不到容器的存在,Aware(意识到的)接口就是帮助Bean感知到IOC容器的存在,即获取当前Bean对应的Spring的一些组件,如当前Bean对应的ApplicationContext等。 1.1.1 Applicati…

python如何进行pip换源

hello,大家好,我是一名测试开发工程师,至今已在自动化测试领域深耕9个年头,现已将本人实战多年的多终端自动化测试框架【wyTest】开源啦,请大家快来体验并关注我吧。 Python的包管理工具pip是开发者必备的利器之一。然…

企业公司网站建站自适应网站源码系统 前后端分离 带完整的源代码包以及搭建部署教程

系统概述 在数字化转型的浪潮中,企业网站已成为展示品牌形象、吸引潜在客户、促进业务交流的重要窗口。为了满足企业对于高效、灵活、易维护网站建设的迫切需求,小编给大家分享一款集先进技术与人性化设计于一体的“企业公司网站建站自适应网站源码系统…

Windows 如何安装和卸载 OneDrive?具体方法总结

卸载 OneDrive 有人想问 OneDrive 可以卸载吗?如果你不使用当然可以卸载,下面是安装和卸载 OneDrive 中的卸载应用具体操作步骤: 卸载 OneDrive 我们可以从设置面板中的应用选项进行卸载,打开设置面板之后选择应用,然…

vue3+springboot+mybatis+mysql项目实践--简单登录注册功能实现

这里是一次对vue3springbootmybatismysql的项目实现,简单实现前后端分离的登录注册功能,主要工具:idea,navicat 目录 一、创建vue3项目并初始配置 创建vue3项目 2.修改项目结构 1)原始目录结构 2)修改后目录结构 …

RFID技术简介

1.RFID(无线射频设别技术)介绍 (1)RFID是一种通信技术,通过无线电讯号耦合识别特点目标并读写相关数据。 (2)类型 (3)应用 智慧仓库,AGV,ETC …

自动驾驶中,实现三维点旋转原理

文章目录 1. 三维点旋转的方案2. 使用复数表示二维点的旋转2.1. 复数的概念2.2. 复数的三种形式及相互转换2.3. 复数概念扩展:实数、虚数、复数 3. 四元数旋转三维点原理4. 使用四元数进行旋转的公式5. 旋转叠加6. 四元数转换为三维点7. 代码实现 1. 三维点旋转的方…

一文学会用RKE部署高可用Kubernetes集群

k8s架构图 RKE简介 RKE全称Rancher Kubernetes Engine,是一个快速的,多功能的 Kubernetes 安装工具。通过RKE,我们可以快速的安装一个高可用K8S集群。RKE 支持多种操作系统,包括 MacOS、Linux 和 Windows。 K8S原生安装需要的先…

【YOLOv5/v7改进系列】改进池化层为SimSPPF

一、导言 SimSPPF(Simplified Spatial Pyramid Pooling with Fixed-size kernel)模块是在YOLOv6架构中引入的一个关键组件,它旨在优化原始SPPF(Spatial Pyramid Pooling Fixed-size)模块的效率。以下是SimSPPF的一些优…

开发TEE的踩坑之开发TEE

系统:Ubuntu20.04(双系统,非虚拟机) 一、前置说明1、TEE平台的选择2、机器间的通信方式3、程序和数据集的示例4、结果文件的解密 二、服务器部署三、客户端部署四、工程应用 本系列为笔者开发TEE(Trusted Execution En…

【笔记】虚拟机中的主从数据库连接实体数据库成功后的从数据库不同步问题解决方法2

错误: Last_Errno: 1008 Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ANONYMOUS at source log mysql-bin.000014, end_log_pos 200275. See error lo…

开放式耳机哪款好一点?开放式耳机科普五款推荐!

“选择开放式耳机真的太难了” “哥,怎么才能选到心仪的开放式耳机啊” 这种评论总是会出现后台或者现实的朋友也会问起来,所以作为耳机测评的博主,在这里给大家科普一下到底一款好用的开放式耳机到底怎么选,这篇文章我花了三天…

Centos系统内磁盘分区

Centos系统内磁盘分区 建议如果有重要数据提前做好备份 以根目录扩容50G为例: 1、卸载/home目录 umount /home 2、删除逻辑卷 y确认即可 lvremove /dev/mapper/centos-home 3、df -h查询一下,/home目录已经不见了 4、向根目录分区追加50G容量 lv…