2つのノード間のリレーションシップのマージクエリを作成しようとしています。トリッキーな部分は、2回目の試合でノードが見つからない場合、別のマッチを行い、マージ要求のフィルタリング条件が異なる「フォールバック」ノードを探すことです。サイファーでリレーションをマージするときにフォールバックノードがある
簡潔にする:Bが存在する場合は(A)→(B)、Bが存在しない場合は(A)→(C)をマージしたい。
これは私が別の記事を見た後思い付いたものです:
MATCH (n:ArticleConv {id:"firstId"}) OPTIONAL MATCH (m:ArticleCode {name:"targetName"}) WHERE m.begin <= n.begin <= m.end OPTIONAL MATCH (l:ArticleCode {num:"targetName"}) WHERE not(()-[:Version]->(l)) FOREACH (o IN CASE WHEN m IS NOT NULL THEN [m] WHEN m IS NULL AND l IS NOT NULL THEN [l] ELSE [] END | MERGE (n)-[r:Link]->(o))
意図したとおりに動作していないが:両方のオプション一致ノードがnullでない場合は、2人の関係は、それぞれのノードを対象に作成されます。
ありがとうございます!
私は、私よりクリーンなソリューションを好むと私は合体がノード上で動作することを学んだし^^ –