使用 ag_catalog 中的名为 cypher 的函数构建 Cypher 查询,该函数返回 Postgres 的记录集合。
Cypher()
Cypher() 函数执行作为参数传递的 Cypher 查询。
语法:cypher(graph_name, query_string, parameters)
返回:
A SETOF records
参数:
Argument Name | Description |
---|---|
graph_name | Cypher 查询的目标图 |
query_string | 要执行的 Cypher 查询。 |
parameters | 可选的参数映射,用于 Prepared Statements。默认值为 NULL。 |
注意事项:
- 如果 Cypher 查询没有返回结果,则仍需要定义记录定义。
- 参数映射只能与 Prepared Statements 一起使用。否则将抛出错误。
查询:
SELECT * FROM cypher('graph_name', $$
/* 在此处编写 Cypher 查询 */
$$) AS (result1 agtype, result2 agtype);
表达式中的 Cypher
Cypher 不能作为表达式的一部分使用,应改用子查询。有关如何在表达式中使用 Cypher 查询的详细信息,请参阅高级 Cypher 查询。
SELECT 子句
在 SELECT 子句中调用 Cypher 作为独立的列是不允许的。但是,当它属于条件时,可以使用 Cypher。
错误的示例:
SELECT cypher('graph_name', $$MATCH (v:Person)RETURN v.name$$);
错误
ERROR: cypher(...) in expressions is not supported
LINE 3: cypher('graph_name', $$^
HINT: Use subquery instead if possible.
使用公有云服务
一些公有云的提供了免安装的数据库服务,无需自己部署。以MemFireCloud为例
直接连接
每个MemFire Cloud应用内置一个完整的Postgres数据库,你可以使用任何支持Postgres的工具来连接到数据库。你可以在控制台内的数据库设置中获取连接信息:
- 来到左侧菜单栏的
设置
部分 - 点击
数据库
- 启用数据库直连
- 找到应用的
连接信息
开启直连
白名单
MemFire Cloud内置白名单功能,开启白名单后,只允许白名单内的IP地址段访问你的数据库。关闭白名单后,访问你数据库的IP地址不受限制,即任何IP地址只要有连接信息都可以与你的数据库进行直连。 在进行白名单配置时,要遵循CIDR规则。MemFire Cloud中白名单功能 默认是关闭的,需用户手动开启。
配置白名单
通过数据库客户端连接数据库,可以执行图操作
CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;