使用 apache 年龄图数据库中自动生成的 id 进行热查询。
我想知道它是边ID还是顶点ID。
例如我有一个 id
844424930131970
。我知道它在图中的某个地方。但我不知道它是顶点的 id 还是边的 id
这在某种程度上取决于您想要
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)
要找出与任何边或顶点对应的特定 ID,您可以通过查看图的结构来检查数据模型,并了解边的类型以及边所表示的顶点。
您还可以查看 ID 范围以检查可能属于特定范围的特定边顶点。
如果你想确定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
替换为您的实际标签即可。