クエリのRETURN部分で、出力するパターンの部分を定義します。 出力には、agtype値、ノード、リレーションシップ、またはプロパティを含めることができます。
戻りノード
returnステートメントで返すノードを一覧表示します。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'B'})
RETURN n
$$) as (n agtype);ノードが返されます。
n
---------------------------------------------------
{id: 0; label: '' properties: {name: 'B'}}::vertex
(1 row)リターンエッジ
ノードnのエッジを返すには、returnリストに含めることができます。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (n)-[r:KNOWS]->()
WHERE n.name = 'A'
RETURN r
$$) as (r agtype);エッジが返されます。
r
-------------------------------------------------------------------
{id: 2; startid: 0; endid: 1; label: 'KNOWS' properties: {}}::edge
(1 row)戻り値のプロパティ
プロパティを返すには、ドット区切り文字を使用します。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'A'})
RETURN n.name
$$) as (name agtype);プロパティ名の値が返されます。
name
------
'A'
(1 row)すべての要素を返す
クエリで見つかったすべての頂点、エッジ、およびパスを返す場合は、* 記号を使用できます。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (a {name: 'A'})-[r]->(b)
RETURN *
$$) as (a agtype, b agtype, r agtype);クエリで使用された2つの頂点とエッジが返されます。
a | b | r
-------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------
{"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex | {"id": 1125899906842625, "label": "BLOCKS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge | {"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex
{"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex | {"id": 1407374883553281, "label": "KNOWS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge | {"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex
(2 rows)珍しい文字を持つ変数
英語のアルファベットに含まれていない文字で構成されるプレースホルダーを導入するには、'を使用して変数を囲みます。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (`This isn\'t a common variable`)
WHERE `This isn\'t a common variable`.name = 'A'
RETURN `This isn\'t a common variable`.happy
$$) as (happy agtype);名前が「A」のノードが返されます。
happy
--------
"Yes!"
(1 row)フィールドのエイリアス
フィールドの名前が使用する式と異なる場合は、列リスト定義の名前を変更して名前を変更できます。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'A'})
RETURN n.name
$$) as (objects_name agtype);ノードのnameプロパティは、フィールドの名前が変更されて返されます。
objects_name
--------------
"A"
(1 row)オプションのプロパティ
オプションのプロパティが存在しない場合は、nullとして扱われます。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (n)
RETURN n.age
$$) as (age agtype);存在する場合、クエリはプロパティを返し、存在しない場合はnullを返します。
age
-----
55
NULL
(2 rows)その他の式
リテラル、述語、プロパティ、関数など、任意の式を戻り項目として使用できます。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
RETURN a.age > 30, 'I''m a literal', id(a)
$$) as (older_than_30 agtype, literal agtype, id agtype);サンプル結果:
older_than_30 | literal | id
----------------------------+-----------------------------+-------------------------
true | 'I'm a literal' | 1
(1 row)ユニークな結果
DISTINCTは、出力するように選択されたフィールドに応じて一意のレコードのみを取得します。
例
SELECT *
FROM cypher('graph_name', $$
MATCH (a {name: 'A'})-[]->(b)
RETURN DISTINCT b
$$) as (b agtype);サンプル結果:
b
----------------------------------------------------------
{id: 1; label: '' properties: {name: 'B'}}::vertex
(1 row)