在 Neo4j 中,MERGE
語句用于根據指定的模式進行創建或匹配節點和關系。它可以在節點或關系不存在時創建它們,并在已存在時進行匹配。
創建或匹配節點:
MERGE (p:Person {name: 'John'});
這個查詢會檢查是否已經存在一個具有 "Person" 標簽且屬性 "name" 為 "John" 的節點。如果不存在,則創建一個新節點。
創建或匹配帶有多個標簽的節點:
MERGE (m:Movie:Action {title: 'The Matrix', released: 1999});
這個查詢會檢查是否已經存在一個帶有 "Movie" 和 "Action" 標簽且屬性 "title" 為 "The Matrix" 的節點。如果不存在,則創建一個新節點。
創建或匹配關系及相關節點:
MERGE (a:Person {name: 'Alice'})
MERGE (b:Person {name: 'Bob'})
MERGE (a)-[:FRIEND]->(b);
這個查詢會首先檢查是否已經存在兩個具有 "Person" 標簽的節點,分別為 "Alice" 和 "Bob"。然后它會創建一個 "FRIEND" 關系將這兩個節點連接起來。
條件性創建或匹配:
MERGE (p:Person {name: 'John'})
ON CREATE SET p.age = 30
ON MATCH SET p.updated = timestamp();
這個查詢會檢查是否已經存在一個具有 "Person" 標簽且屬性 "name" 為 "John" 的節點。如果不存在,則創建一個新節點并設置 "age" 屬性為 30。如果已存在,則更新 "updated" 屬性為當前時間戳。
MERGE
語句非常適用于在插入或更新數據時進行模式匹配,它可以確保數據的一致性,同時避免重復創建相同的節點或關系。