2017-06-14 33 views
2

當我寫這樣一個簡單的Cypher查詢:Neo4j/Cypher:CREATE UNIQUE是否被棄用?

MATCH (r:Person {name:'Jon'}) 
MATCH (s:Person {name:'Ana'}) 
CREATE UNIQUE (r)-[:FRIEND_OF]->(s) 

我在Neo4j的瀏覽器接收警報訊息話題。警報消息稱:

規則策劃者是在當前CYPHER版本可用, 查詢已經由一個老CYPHER版本上運行。 CREATE UNIQUE是 不支持當前CYPHER版本,查詢已通過 執行舊的CYPHER版本

這裏的警告消息的打印屏幕:

Alert message

我搜索這個消息在Neo4j Github中沒有找到任何東西。該文件也沒有提到任何折舊。

我的問題是: CREATE UNIQUE是否被棄用?爲什麼?

我正在使用Neo4j 3.2.1。

謝謝。

PS:我知道我的查詢可以重構。這只是一個例子。在查詢中使用CREATE UNINQUE進行的所有重構也會在Neo4j瀏覽器中顯示相同的警報消息。

+0

我可以」回答你的問題,但作爲一個供參考(你可能已經知道),但我認爲你可以重構你的查詢,就像'MATCH( r:Person {name:'Jon'}),(s:Person {name:'Ana'})CREATE UNIQUE(r) - [:FRIEND_OF] - >(s)'(aka get ride the second'match'並用','替換) – John

回答

2

CREATE UNIQUE設置爲被MERGE完全替換。所以,你的語法是:

MATCH (r:Person {name:'Jon'}) 
MATCH (s:Person {name:'Ana'}) 
MERGE (r)-[:FRIEND_OF]->(s) 

問候, 湯姆

0

試試這個

MATCH (lft:Person {name:'Jon'}),(rgt) 
WHERE rgt.name IN ['Ana'] 
CREATE UNIQUE (lft)-[r:KNOWS]->(rgt) 
RETURN r 

請注意,您可以搜索多個名字太像這樣

MATCH (lft:Person {name:'Jon'}),(rgt) 
WHERE rgt.name IN ['Ana','Maria'] 
CREATE UNIQUE (lft)-[r:KNOWS]->(rgt) 
RETURN r