Redis Graph: объединить существующие узлы - PullRequest
4 голосов
/ 20 июня 2019

Представьте, что существуют два узла, (:USER {name: "John"}) и (:AGE {name: "28"}).Теперь следующий запрос в порядке с Neo4j

MATCH (u:USER {name: "John"})
MATCH (a:AGE {name: "28"})
MERGE (u)-[:IS]->(a)

и создает отношение IS между двумя узлами.Когда тот же запрос выполняется в Redis Graph, я получаю следующую ошибку: Syntax error at offset 22 near 'MERGE'.Кто-нибудь знает, как выполнить тот же запрос на Redis Graph?

Я должен добавить, что CREATE не работает вместо MERGE, поскольку он создаст дубликат (возможно) уже существующего ребра.

1 Ответ

2 голосов
/ 24 июня 2019

В настоящее время MERGE работает только как отдельное предложение, поэтому его нельзя объединить с другими директивами, такими как MATCH или RETURN.

Ссылка: Команда слияния , GitHub Issue

Вы можете сделать что-то вроде этого (но вместо этого будет создан весь шаблон):

MERGE (u:USER {name: "John"})-[:IS]->(a:AGE {name: "28"})

Так что я думаю, что пока единственная возможность - это выполнитьдве отдельные команды:

MATCH (u:USER {name: "John"})-[r:IS]->(a:AGE {name: "28"})
RETURN count(r)

Если эта транзакция возвращает пустой результат, необходимо создать отношение:

MATCH (u:USER {name: "John"})
MATCH (a:AGE {name: "28"})
CREATE (u)-[:IS]->(a)
...