メッセージキューを介してデータベース書き込みコマンドをワーカー(非常に大量)にディスパッチするアプリケーションがあるので、エンドノードが存在する場合にノードとリレーションシップを作成する(そうでなければ最初のノードのみを作成する)
私は2つのノード、例えば "アカウント"と "メディア"を持っています。この仮想アプリケーションでは、ユーザーは匿名のメディアをアップロードできます。匿名のメディアは自動的に作成され、後で関連付けることができます。
アカウント用とメディア用の2つのメッセージが受信されます(ほぼ確実に異なるワーカーによって)。どちらも、もう一方がまだ書かれているかどうかは分かりません。他のノードが存在する場合は、
- 新しいアカウントを作成/メディア
- 間
POSTED_BY
の関係、他のノードは、Ifを作成します。私は、各ワーカー上で実行されるクエリを、記述する必要があります存在しない場合、のみにかかわらず、各メッセージは、受信された注文の、したがって - 戻り、新しく作成されたノード
を現在のノードを作成し、最初のクエリは、ノードAを作成し、第うeの2番目のクエリはノードB +関係を作成します。
私は同じクエリでそれらの両方を作成していた場合、それは簡単で、次のようになります。
CREATE (m:Media { url: 'xyz.jpg' })-[:POSTED_BY]->(u:Account { username: 'johndoe' })
RETURN m,u
私は、CREATE UNIQUE
とMERGE
を見てきましたが、両方のは、それが存在しない場合、ノードを作成するように見えます、何もしないだけではありません。
'm、r、u'を返すことができず、' m'の代わりにすべての変数を返すことができない理由はありません –