2013-05-09 6 views
6

2つの要求を1つのクエリに結合したいと思いますが、1つのサイファークエリで2つの一致ステートメントを使用するとどうなるかわかりません。サイファークエリで2つの一致ステートメントを使用する方法

私は友人のリストを持っており、コレクションにリストされている叔父と兄弟のそれぞれがいる友人のリストを見たいと思います。仕事をするマッチステートメントが2つありますか?例えば

match friends-[:childOf]->parents-[:brother]->uncles 
    , friends-[:childOf]->parents<-[:childOf]-siblings 
return friends, collect(siblings), collect(uncles) 

ただし、このようなクエリを実行すると、結果は常に返されます。

+2

http://console.neo4j.org/でサンプルグラフを共有できますか? –

答えて

7

あなたはすでにあなたはこのように行うことができ、あなたの最初の試合クラスで両親を選択しているので -

match friends-[:childOf]->parents-[:brother]->uncles 
with friends, parents, uncles 
match parents<-[:childOf]-siblings 
return friends, collect(siblings), collect(uncles) 
1

あなたはそれらの関係のいくつかをオプションにすることをお勧めします。たとえば、兄弟を見つけても叔父が見つからない場合、この問合せは両方の一致句を満たしていないため、nullを戻します。エンドリレーションシップをオプションにすると、データを返すために両方の句を完全に満たす必要はありません。したがって:

match friends-[:childOf]->parents-[?:brother]->uncles 
    , friends-[:childOf]->parents<-[?:childOf]-siblings 
return friends, collect(siblings), collect(uncles) 
関連する問題