如何使用自动生成的id进行查询并了解它是边id还是顶点id

问题描述 投票:0回答:3

使用 apache 年龄图数据库中自动生成的 id 进行热查询。

我想知道它是边ID还是顶点ID。

例如我有一个 id

844424930131970
。我知道它在图中的某个地方。但我不知道它是顶点的 id 还是边的 id

postgresql graph-databases apache-age
3个回答
1
投票

这在某种程度上取决于您想要

MATCH
确定它是顶点还是边。我认为不可能匹配图中的抽象对象。

对于顶点:

postgresDB=# SELECT * FROM cypher('airroutes', $$
MATCH (n)
WHERE id(n) = 844424930131969
RETURN n $$)
AS (n agtype);
                                                                                                                                                                        n     
                                                                                                                                                                    
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
 {"id": 844424930131969, "label": "airport", "properties": {"id": "1", "lat": "33.63669968", "lon": "-84.42810059", "city": "Atlanta", "code": "ATL", "desc": "Hartsfield - Ja
ckson Atlanta International Airport", "elev": "1026", "icao": "KATL", "__id__": 1, "region": "US-GA", "country": "US", "longest": "12390", "runways": "5"}}::vertex

对于边缘:

postgresDB=# SELECT * FROM cypher('airroutes', $$
MATCH ()-[e]-() 
WHERE id(e) = 1688849860263937
RETURN e $$)
AS (n agtype);
                                                                                             n                                                                                
             
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------
 {"id": 1688849860263937, "label": "route", "end_id": 844424930131971, "start_id": 844424930131969, "properties": {"dist": "809", "route_id": "3749", "end_vertex_type": "airp
ort"}}::edge
 {"id": 1688849860263937, "label": "route", "end_id": 844424930131971, "start_id": 844424930131969, "properties": {"dist": "809", "route_id": "3749", "end_vertex_type": "airp
ort"}}::edge
(2 rows)

0
投票

要找出与任何边或顶点对应的特定 ID,您可以通过查看图的结构来检查数据模型,并了解边的类型以及边所表示的顶点。

您还可以查看 ID 范围以检查可能属于特定范围的特定边顶点。


0
投票

如果你想确定ID是边ID还是顶点1那么你可以使用以下子句:

MATCH (n) WHERE id(n) = 844424930131970
RETURN
  CASE
    WHEN n:VertexType THEN 'Vertex'
    WHEN n:EdgeType THEN 'Edge'
    ELSE 'Unknown'
  END AS Type;

您只需将

VertexType
EdgeType
替换为您的实际标签即可。

© www.soinside.com 2019 - 2024. All rights reserved.