Neo4j 如何根据条件设置多个属性?

Neo4j 如何根据条件设置多个属性?,neo4j,cypher,Neo4j,Cypher,多亏了cybersam,我解决了基于以下条件设置属性的问题: MERGE (u:User {uuid: {userUUID}}) -[r:relation {rType: {rType}}]-> (n:Node) ON CREATE SET r.uuid = {relUUID}, r.status = {relStatus} ON MATCH SET r.status = CASE WHEN r.status = "1" THEN {relStatus} ELSE r.s

多亏了cybersam,我解决了基于以下条件设置属性的问题:

MERGE (u:User {uuid: {userUUID}}) -[r:relation {rType: {rType}}]-> (n:Node)
ON CREATE SET 
    r.uuid = {relUUID},
    r.status = {relStatus}
ON MATCH SET
r.status = CASE WHEN r.status = "1" THEN {relStatus} ELSE r.status END
RETURN r;
从今天早上开始,我一直在挣扎,因为我想在这个查询中设置两个或更多的条件。所有的尝试都会导致一些非常复杂的结构,但我找不到正确的语法。我试过了

ON MATCH SET
r.status = CASE WHEN r.status = "1" THEN {relStatus} ELSE r.status END,
r.type = CASE WHEN r.status = "1" THEN {relType} ELSE r.type END
RETURN r;
但这似乎很容易。然后我尝试直接设置属性

ON MATCH SET
CASE 
    WHEN r.status = "1" THEN [r.status = {relStatus}, r.type = {relType}]  
END
或者在案子结束后再安排他们

ON MATCH 
CASE 
    WHEN r.status = "1" THEN {relStatus} ELSE r.status AS queryStatus,
    WHEN r.status = "1" THEN {relType} ELSE r.type AS queryType
END
SET
r.status = queryStatus,
r.type = queryType
RETURN
我总是遇到语法错误,可能是因为语法错误:) 也许有人有一个查询,我可以根据条件设置多个属性


感谢Balael使用
CASE WHEN
可以构建一个包含您想要设置的属性的映射,或者构建一个空的文本映射,以防您不想设置任何内容。然后使用
set+={}
应用这些值:

MERGE (u:User {uuid: {userUUID}}) -[r:relation {rType: {rType}}]-> (n:Node)
ON CREATE SET 
    r.uuid = {relUUID},
    r.status = {relStatus}
ON MATCH 
    SET r += CASE WHEN r.status = "1" 
        THEN {status: {relStatus}, type: {relType}} 
        ELSE {} 
    END
RETURN r;

注意:我没有尝试使用参数,而是使用固定的文字值。非常感谢Stefan,解决了这个问题。与mymap一起设置。。。学到了一些新东西:)