2016-10-30 5 views
0

私は、次のクエリを持っている:サイファー - サイファーで唯一のパス変数にフルノード、ノード名を表示しない

MATCH p=(n1 {name: "Node1"})-[r*..6]-(n2 {name: "Node2"}) 
RETURN p, reduce(cost = 0, x in r | cost + x.cost) AS cost 

期待どおりに働いています。ただし、完全なn1ノード、次に全r関係(すべての属性を含む)、完全n2の順に出力します。

代わりに、n1のname属性の値、rのtype属性、n2のname属性の値を表示したいだけです。

どうすれば可能ですか?

ありがとうございます。

+0

'p'を返すと、ノードとリレーションシップを含むパスが返されます。結果のビジュアライザ(Neo4jブラウザなど)でパスが文字列に書き込まれる方法を変更する方法はないので、パスを分割してそれらを返す必要があります。 しかし、なぜあなたは印刷結果に頼っていますか?あなたはアプリケーションを介してこれを実行しているのではありませんか?ドライバを経由して、パスをコンスタントに消費することができますか? –

答えて

1

リクエストの難しい部分は、rの型属性です。rはパスの関係の集合であり、単一の関係ではありません。 EXTRACTを使用して、パス内のすべてのリレーションシップに対するリレーションシップタイプのリストを生成できます。これがあなたに役立つかどうかを確認してください:

MATCH (n1 {name: "Node1"})-[r*..6]-(n2 {name: "Node2"}) 
RETURN n1.name, EXTRACT(rel in r | TYPE(rel)) as types, n2.name, reduce(cost = 0, x in r | cost + x.cost) AS cost 

また、パスのコストを計算しているようです。 shortestPath()関数を見たことがありますか?

関連する問題