Quando escrevo uma consulta Cypher simples como esta:
MATCH (r:Person {name:"Jon"})
MATCH (s:Person {name:"Ana"})
CREATE UNIQUE (r)-[:FRIEND_OF]->(s)
Estou recebendo uma mensagem de alerta no navegador Neo4j. A mensagem de alerta diz:
O planejador RULE não está disponível na versão atual do CYPHER, o A consulta foi executada por uma versão mais antiga do CYPHER. CREATE UNIQUE é sem suporte para a versão atual do CYPHER, a consulta foi executada por uma versão mais antiga do CYPHER
Aqui, uma tela de impressão da mensagem de alerta:
Procurei por esta mensagem no Neo4j Github e não encontrei nada. Além disso, os documentos não mencionam nenhuma depreciação.
Minha pergunta é: CREATE UNIQUE está obsoleto? Por quê?
Estou usando o Neo4j 3.2.1.
Obrigado.
PS: Eu sei que minha consulta pode estar se refatorando. É apenas um exemplo. Além disso, toda a refatoração feita na consulta usando CREATE UNINQUE
mostre a mesma mensagem de alerta no navegador Neo4j.
Respostas:
2 para resposta № 1CREATE UNIQUE está definido para ser completamente substituído por MERGE. Portanto, sua sintaxe seria:
MATCH (r:Person {name:"Jon"})
MATCH (s:Person {name:"Ana"})
MERGE (r)-[:FRIEND_OF]->(s)
Saudações, Tom
0 para resposta № 2
Tente isso
MATCH (lft:Person {name:"Jon"}),(rgt)
WHERE rgt.name IN ["Ana"]
CREATE UNIQUE (lft)-[r:KNOWS]->(rgt)
RETURN r
Observe que você pode procurar vários nomes também como este
MATCH (lft:Person {name:"Jon"}),(rgt)
WHERE rgt.name IN ["Ana","Maria"]
CREATE UNIQUE (lft)-[r:KNOWS]->(rgt)
RETURN r