HELOコマンドは、のNeo4j、マッチを持つノード "OR"
私は、ノードがtypeXであるかtypeY 私が最初に考えたことができ、グラフを一致させたいです:(
は、二回のクエリを入力することなく、どのような方法があります。このよう :?
match (:typeX)-[]-(z), (:typeY)-[]-(z) return z
誰かが私を助けることができますか? は、事前にあなたに感謝:)
HELOコマンドは、のNeo4j、マッチを持つノード "OR"
私は、ノードがtypeXであるかtypeY 私が最初に考えたことができ、グラフを一致させたいです:(
は、二回のクエリを入力することなく、どのような方法があります。このよう :?
match (:typeX)-[]-(z), (:typeY)-[]-(z) return z
誰かが私を助けることができますか? は、事前にあなたに感謝:)
一つの方法は、
MATCH (n) WHERE labels(n) IN ['typeX','typeY']
WITH n
MATCH (n)-[]-(z)
RETURN z
「typeXまたはtypeYのどちらかが」頻繁に照会し、ドメイン内のいくつかの共通の目的を共有している場合は、あなたが彼らに別の共通のラベルを追加することができています代わりにそのラベルを使用して照会してください。
MATCH (n)
WHERE ANY(lab IN labels(n) WHERE lab IN ['typeX', 'typeY'])
MATCH (n)--(z)
RETURN z
このクエリはn
は、複数のラベルを持っている場合でも動作します。現在の他の回答はすべて、すべてのノードをスキャンしてからラベルをフィルタリングする必要がありますが、これは多数のノード(PROFILEクエリ)ではパフォーマンスが低下します。私が知っているすべての効率的な手段は、より冗長です。
2つのクエリのUNIONを実行して、all:typeXおよび:typeYノードから1ホップのノードを返すことができます。
match (:typeX)--(z)
return z
union
match (:typeY)--(z)
return z
n個の述語n:Label
MATCH (n)--(z)
WHERE n:typeX OR n:typeY
RETURN z
は、残念ながら、性能を犠牲にすることなく、これを行うための良い効率的な方法がそこにはありませんされています