2016-05-28 6 views
1

マッチしたすべてのノードとそれらが持つ可能性のあるリレーションシップを返す最適な方法を見つけようとしていますか?十分に、私はプロジェクトを作成したすべてのユーザーを返す必要がありそうCypher Query返されたノードとオプションのリレーションシップ

match (u : User)-[r:CREATE]->(p: Project) return u, collect(p) 

シンプル

が、ユーザーは、他の関係を持つことができ、私は、必要に応じてそれらを含めるしたいかになります。ここでは

は私の問題ですチェックする(true/falseを返す)

たとえば、ユーザーはRECOMMENDという関係を持つことができますが、私はそれに制限したくありませんが、それがどのノードに存在するかどうかを確認しますか?

理想的には私のリターンテーブルは次のようになります。

USER1 - PROJECT(S) - 推奨されるユーザー

USER2 - PROJECT(S) - NULL(誰もが推奨されていない)

答えて

2

OPTIONAL MATCHが一致しますパターンが存在しない場合はnullを返します

MATCH (u : User)-[r:CREATE]->(p: Project) 
OPTIONAL MATCH (u)-[:RECOMMEND]->(rec) 
RETURN u, collect(p), collect(rec) 
+0

はい、完璧、ありがとう – zsayn

関連する問題