我想弄清楚MERGE和CREATE UNIQUE之間有什麼區別。我知道這些功能:合併和獨特的Neo4j之間的區別
MERGE
我能夠創建節點,如果它不存在模式。
MERGE (n { name:"X" }) RETURN n;
這創建節點「n」與屬性名稱,空節點「m」和關係RELATED。
MERGE (n { name:"X" })-[:RELATED]->(m) RETURN n, m;
CREATE UNIQUE
我不能這樣創建節點。
CREATE UNIQUE (n { name:"X" }) RETURN n;
如果存在節點「n」,則創建唯一使空節點「m」和關係RELATED。
MATCH (n { name: 'X' }) CREATE UNIQUE (n)-[:RELATED]->(m) RETURN n, m;
如果這個模式存在,沒有創建任何東西,只返回模式。
從我的角度來看,我看到MERGE和CREATE UNIQUE是完全相同的查詢,但是CREATE UNIQUE不能在關係中創建起始節點。我會很感激,如果有人能解釋這個問題並比較這些查詢,thx。
爲什麼你會永遠使用剛剛創建的時候,你已經合併? –
'CREATE'通常要快得多。 'CREATE'只是創建你所告訴的內容,而'MERGE'必須執行相同的'MATCH'子句和高級鎖定,以確保沒有其他人同時創建相同的模式。通過創建MERGE可以依賴的唯一性約束,你可以加速許多'MERGE'語句。 – jakewins
@jakewins *思考MERGE的最簡單方法是作爲MATCH或創建。*如果你沒有一個獨特的約束,這不是原子的,這完全把我扔掉了。命名爲'MERGE'並且不是原子的真的很糟糕:(我在添加一個唯一的索引後開始出現死鎖錯誤,這再次給我帶來了困難。所以,我的問題是這樣的:爲什麼我要使用'MERGE' – tugberk