Neo4j 如何根据条件设置多个属性?
多亏了cybersam,我解决了基于以下条件设置属性的问题: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
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一起设置。。。学到了一些新东西:)