Redis图:在现有节点上合并

时间:2019-06-20 11:28:52

标签: cypher redisgraph

想象一下,存在两个节点(: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 个答案:

答案 0 :(得分:2)

  

当前,MERGE仅用作独立子句,因此不能与MATCH或RETURN等其他指令组合。

参考:Merge commandGitHub issue

您可以执行以下操作(但它将创建整个模式):

static def(name: string) {
    switch (name) {
        case 'test':
            return console.error;
        default:
            return console.warn;
    }
}
def("test")("Your message to log as error");
def("nottest")("Your message to log as warning");

所以我认为目前唯一的选择是执行两个单独的命令:

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

如果此事务返回空结果,则需要创建关系:

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