Skip to Content

RETURN 子句

RETURN 和 WITH 提供类似的功能,都用于进一步聚合或投影数据。区别是 RETURN 需要返回并显示处理后的结果。这里我们不会过多介绍 RETURN 的功能本身,您可以参考 WITH 章节 的用法。我们主要关注结果输出和一些常见的 RETURN 使用模式。

返回节点

返回单标签节点

MATCH (a:Person) RETURN a;

输出结果显示了每个人员节点的内部 ID(由图数据库分配)、标签及所有属性:

+-------------------------------------------------------+ | a | +=======================================================+ | {_ID: 0, _LABEL: Person, name: marko, age: 29} | +-------------------------------------------------------+ | {_ID: 1, _LABEL: Person, name: vadas, age: 27} | +-------------------------------------------------------+ | {_ID: 2, _LABEL: Person, name: josh, age: 32} | +-------------------------------------------------------+ | {_ID: 3, _LABEL: Person, name: peter, age: 35} | +-------------------------------------------------------+

返回具有多个标签的节点

MATCH (a) RETURN a;

输出结果展示了每个节点的内部 ID、标签以及其所属节点类型的所有属性:

+-----------------------------------------------------------------------------+ | a | +=============================================================================+ | {_ID: 0, _LABEL: Person, name: marko, age: 29} | +-----------------------------------------------------------------------------+ | {_ID: 1, _LABEL: Person, name: vadas, age: 27} | +-----------------------------------------------------------------------------+ | {_ID: 2, _LABEL: Person, name: josh, age: 32} | +-----------------------------------------------------------------------------+ | {_ID: 3, _LABEL: Person, name: peter, age: 35} | +-----------------------------------------------------------------------------+ | {_ID: 72057594037927936, _LABEL: Software, name: lop, lang: java} | +-----------------------------------------------------------------------------+ | {_ID: 72057594037927937, _LABEL: Software, name: ripple, lang: java} | +-----------------------------------------------------------------------------+

返回关系

MATCH (a:Person)-[k]->(b) RETURN k;

输出结果包含关系的内部 ID、标签、所有属性,以及源节点和目标节点的标签和 ID:

+--------------------------------------------------------------------------------------------------------------------------------------+ | k | +======================================================================================================================================+ | {_ID: 1, _LABEL: KNOWS, _SRC_LABEL: Person, _DST_LABEL: Person, _SRC_ID: 0, _DST_ID: 1, weight: 0.5} | +--------------------------------------------------------------------------------------------------------------------------------------+ | {_ID: 2, _LABEL: KNOWS, _SRC_LABEL: Person, _DST_LABEL: Person, _SRC_ID: 0, _DST_ID: 2, weight: 1.0} | +--------------------------------------------------------------------------------------------------------------------------------------+ | {_ID: 1103806595072, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Software, _SRC_ID: 0, _DST_ID: 72057594037927936, weight: 0.4} | +--------------------------------------------------------------------------------------------------------------------------------------+ | {_ID: 1103808692224, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Software, _SRC_ID: 2, _DST_ID: 72057594037927936, weight: 0.4} | +--------------------------------------------------------------------------------------------------------------------------------------+ | {_ID: 1103808692225, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Software, _SRC_ID: 2, _DST_ID: 72057594037927937, weight: 1.0} | +--------------------------------------------------------------------------------------------------------------------------------------+ | {_ID: 1103809740800, _LABEL: CREATED, _SRC_LABEL: Person, _DST_LABEL: Software, _SRC_ID: 3, _DST_ID: 72057594037927936, weight: 0.2} | +--------------------------------------------------------------------------------------------------------------------------------------+

返回路径

返回重复路径

MATCH (a:Person)-[k*1..2]->(c) RETURN k;

返回路径中的所有节点/关系

MATCH (a:Person)-[k*1..2]->(c) RETURN nodes(k) AS nodes, rels(k) AS rels;

返回路径中节点/关系的属性

MATCH (a:Person)-[k*1..2]->(c) RETURN properties(nodes(k), 'name') AS names, properties(rels(k), 'weight') AS weights;

返回 TopK

Return、OrderBy 和 Limit 组合用于输出 TopK 查询结果

MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN a.name, b.name ORDER BY a.name ASC, b.name ASC LIMIT 2;

输出:

+-------------+-------------+ | _0_a.name | _2_b.name | +=============+=============+ | marko | josh | +-------------+-------------+ | marko | vadas | +-------------+-------------+

带聚合的返回

输出聚合结果

MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN label(a) AS a_label, label(b) AS b_label, count(*) AS cnt;

使用 DISTINCT 返回

输出去重后的结果

MATCH (a) RETURN DISTINCT label(a);
Last updated on