2017-05-27 6 views
-3

プロパティ名がAとBの2つのノードがあります。それぞれに複数の電話連絡先が保存されています。ユーザーAが彼の連絡先にユーザーC Neo4j関係を作る方法

  • ユーザBが自分の連絡先、彼KNOWSユーザー関係で、ユーザCを接続する方法

    contacts

  • でユーザーCを持っている

    • AとB?

      まず、ユーザCをマージする必要があります。これは、KNOWSという名前の関係を作成することです。

    答えて

    0

    ユーザCとユーザAとユーザBを知っている関係をどのように結びつけるのですか?

    は単純に実行します。

    MATCH(a {name:"A"}) // Match nodes with property name = "A" and store it in a variable 
    MATCH(b {name:"B"}) // Match nodes with property name = "B" and store it in b variable 
    MERGE (c {name:"C"}) // merge c (will be created if a node with name = "C does not exists yet") 
    CREATE UNIQUE (c)-[:KNOWS]->(a) // Will create :KNOWS relationship from c to a if it not exists 
    CREATE UNIQUE (c)-[:KNOWS]->(b) // Will create :KNOWS relationship from c to b if it not exists 
    
    0

    あなたはまた、両方のCを作成するために、MERGEを使用することができますし、1つのステップでの関係を知っている:

    MATCH (a:user {name:'A'}) MERGE (c:user {name:'C'})-[:KNOWS]->(a); 
    

    ここでは、を探しています:ユーザープロパティーのあるノード = 'A'。これが見つかった場合、結果はMERGE句に渡されます。完全なパスをに与えています。 MERGEは存在しないパスの部分を作成します。この場合、タイプのノードが作成されます。ユーザーには、という名前のプロパティが 'C'に設定されています。それはまた、CからAへのKNOWSの関係を作成します。MERGEは、与えられた既存のノードを使用します。このように、MERGEはCREATEとは異なります。なぜなら、CREATEは新しいノードaを含むすべてを作成しようとするからです。

    あなたはノードCに設定する他のプロパティを持っていた場合は、ONを使用して、同時にそれらのプロパティを設定することができ、サブ句をCREATE:

    MATCH (a:user {name:'A'}) MERGE (c:user {name:'C'})-[:KNOWS]->(a) ON CREATE SET c={name:'C', phone:'+1 234 5678'};