は、再び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
この部分を詳しく説明できますか? 「2番目のコレクションにないコレクションからアイテムを返す」 –
もっと正確に言えば、私はあなたが「コレクション」という意味を理解していませんか?それは属性内のリスト、特定の関係によって結ばれたノードの集合ですか? –
これを手伝ってくれてありがとう。基本的に、最初の一致ステートメントに固有のノードを返したいと思います。 実際のアプリケーションでは、2つのマルチステップ関係パスを使用してノードを照合し、最初のパスに固有のノードとの直接的な関係を削除する必要があります。 –