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