如何在Apache Age中通过自动生成ID查询并判断其为顶点ID或边ID
在Apache Age中使用自动生成ID查询并判断类型
1. 使用自动生成ID执行查询
Apache Age的顶点和边ID均为bigint类型,你可以通过Cypher语句直接根据ID查询对应的元素:
查询顶点
如果目标ID属于顶点,执行以下Cypher语句:
MATCH (n) WHERE id(n) = 844424930131970 RETURN n;
该语句会返回ID匹配的顶点及其属性。
查询边
如果目标ID属于边,执行以下Cypher语句:
MATCH ()-[e]->() WHERE id(e) = 844424930131970 RETURN e;
该语句会返回ID匹配的边及其属性。
2. 判断ID是顶点ID还是边ID
由于顶点和边的ID空间可能存在重叠,你可以通过两种方式快速判断ID类型:
方式一:通过Cypher查询验证
依次执行顶点和边的查询语句:
- 先运行顶点查询,若返回结果则为顶点ID;
- 若顶点查询无结果,再运行边查询,返回结果则为边ID。
方式二:查询Apache Age系统表
Age在PostgreSQL的ag_catalog模式下维护了系统表,直接查询这些表可以快速验证:
- 检查是否为顶点ID:
SELECT id, label FROM ag_catalog.ag_vertex WHERE id = 844424930131970;
- 检查是否为边ID:
SELECT id, label FROM ag_catalog.ag_edge WHERE id = 844424930131970;
有返回记录的表即可对应ID的类型。
一次性判断的联合查询
你也可以用一条SQL语句直接获取ID类型:
SELECT 'vertex' AS element_type FROM ag_catalog.ag_vertex WHERE id = 844424930131970 UNION ALL SELECT 'edge' AS element_type FROM ag_catalog.ag_edge WHERE id = 844424930131970;
查询结果会直接显示该ID对应的元素类型(若存在多匹配则会返回多条记录,实际场景中这种情况极少)。
内容的提问来源于stack exchange,提问作者Moontasir Mahmood
相关产品推荐
相关产品推荐

