2017-01-15 10 views
0

コレクションから2番目のコレクションにないアイテムを返したいとします。私は以下で試したことの例を持っていますが、最初のコレクションからすべてのアイテムを返します。これは新しいe1変数を定義しますようCypherは別のコレクションにない部分と一致することができません

match(e1:Skill) where e1.SkillName = 'skill1' or e1.SkillName = 'skill2' 
match(e2:Skill) where e2.SkillName = 'skill2' or e2.SkillName = 'skill3' 

match(e1) where 
not e1.SkillName = e2.SkillName 

return e1 
+0

この部分を詳しく説明できますか? 「2番目のコレクションにないコレクションからアイテムを返す」 –

+0

もっと正確に言えば、私はあなたが「コレクション」という意味を理解していませんか?それは属性内のリスト、特定の関係によって結ばれたノードの集合ですか? –

+0

これを手伝ってくれてありがとう。基本的に、最初の一致ステートメントに固有のノードを返したいと思います。 実際のアプリケーションでは、2つのマルチステップ関係パスを使用してノードを照合し、最初のパスに固有のノードとの直接的な関係を削除する必要があります。 –

答えて

0

は、再びmatch(e1)を起動しないでください。

代わり

、単にe2のために一致した後where句を追加します。

match(e1:Skill) where e1.SkillName = 'skill1' or e1.SkillName = 'skill2' 
match(e2:Skill) where e2.SkillName = 'skill2' or e2.SkillName = 'skill3' 
where not e1.SkillName = e2.SkillName 
return e1 
あなたはまた、また、不等価演算子 <>を使用することにより、単一の matchと単一 where句を使用してクエリを簡素化することができます

match (e1:Skill), (e2:Skill) 
where e1.SkillName = 'skill1' or e1.SkillName = 'skill2' 
    and e2.SkillName = 'skill2' or e2.SkillName = 'skill3' 
    and e1.SkillName <> e2.SkillName 
return e1 

更新:あなたはユニークなを持つノードを探している場合10の場合、各ノードについて、同じノードのすべてのノードをカウントし、1つだけ存在することを確認することができます。

match (e1:Skill) 
where e1.SkillName = 'skill1' or e1.SkillName = 'skill2' 
match (e2:Skill {SkillName: e1.SkillName}) 
with e1, count(e2) AS count 
where count = 1 
return e1 
+0

ありがとうございます。簡略化されたクエリははるかにきれいなので、実装しました。残念ながらskill2はまだ返ってきていますが、私はskill1しか期待していませんでしたが、 –

+0

があります。このクエリの場合、 'skill2'はデータベースに' skill3'がある場合の有効な応答です - 'e1'は' skill2'に束縛され、 'e2'は' skill3'に束縛されます。 –

+0

私はそれがうまくいくとは思わない。既存のノードの同じプロパティ値を持つ同じラベルのノードを探すオプションのマッチは、少なくとも同じノードを返します。 e2がnullになることはありません。 – InverseFalcon

2

1つのクエリから結果を収集し、コレクションメンバーシップに基づく述語を使用して、探している結果を探したいと思うでしょう。

match(e2:Skill) 
where e2.SkillName = 'skill2' or e2.SkillName = 'skill3' 
with collect(e2) as excluded 
match(e1:Skill) 
where (e1.SkillName = 'skill1' or e1.SkillName = 'skill2') 
and not e1 in excluded 
return e1 
+0

これは完璧です!本当にありがとう –

関連する問題