にノードとの関係を結合するのでthis questionの合併症として、私は基本的にCYPHERは、単一の列
MATCH (n:TEST) OPTIONAL MATCH (n)-[r]->() RETURN DISTINCT n, r
をしたいと私はノーリピート値が1列としてのnとrを返すようにしたいです。 ":予想一覧が、関係(行1、列47)であった型の不一致" エラーただし、
MATCH (n:TEST) OPTIONAL MATCH (n)-[r]->() UNWIND n+r AS x RETURN DISTINCT x
を実行することができます。そして、このクエリ
MATCH (n:TEST) RETURN DISTINCT n UNION MATCH()-[n]->() RETURN DISTINCT n
は、同じ列内のノードとの関係を置きますが、最初の試合からのコンテキストは後半に失われています。
どのようにして、一致するすべてのノードと関係を1つの最小リストとして返すことができますか?
UPDATE:
これは私がこれを処理するカップルの方法は、あなたが内にこれらを保持する場合によっては、あります
MATCH (n:TEST) OPTIONAL MATCH (n)-[r]->() RETURN n {.*, rels:collect(r {properties:properties(r), id:id(r), type:type(r), startNode:id(startNode(r)), endNode:id(endNode(r))})} as n
最後の2が1つのリストにそれらを結合しますが、その単なるフォーマットの変更であり、ノード情報は関係の時間に返されます。最初のクエリは私が望むことをしますが、関係ラベル(およびエンドノード)は失われます。関係ノード全体を値の一部にする方法はありますか? – Tezra
トリック – InverseFalcon
Okを実行する必要があるクエリを追加したので、開始ノードと終了ノードでid()関数を使用できます(これらのノードは、このノードの開始、終了、ラベル/タイプ、も返されるので、それ以上の情報は重複している)。ただ一つの最後のこと。型フィールドがオーバーロードされる可能性があるので、プロパティを「プロパティ」フィールドにプッシュして、それをきれいに保つ必要があります。それは私が単にできないようだ "プロパティ:。* "どうすればそれを修正できますか? – Tezra