Neo4j 根据条件更改属性
查询应检查关系是否已经存在,在这种情况下,应检查属性是否具有特殊值,并根据检查进行更改。如果该关系不存在,则应创建该关系 我试过几种方法,最接近的是Neo4j 根据条件更改属性,neo4j,cypher,Neo4j,Cypher,查询应检查关系是否已经存在,在这种情况下,应检查属性是否具有特殊值,并根据检查进行更改。如果该关系不存在,则应创建该关系 我试过几种方法,最接近的是 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 = {r
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 = {relStatus}
WHERE r.status = "1" // Only if r.status of the existing pattern is 1 it shall be changed to the value of relStatus
RETURN r
WHERE is not correct语法-可能有人提示我如何在使用on MATCH时检查属性并仅基于特殊触发器更改属性
谢谢。这应该可以:
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;
请澄清。在示例查询中,是否要在将
status
设置为“1”之前测试{relStatus\u 2}
的值是否为“1”。我已经纠正了这个问题。应检查r.status的值是否为1。打字错误,谢谢你的提问。谢谢,这是一种很有前途的方法(学习complexer查询,谢谢:),尽管我遇到了一个错误:“必须为CREATE指定一个关系类型”-“r”是从我的角度设置的,所以我对这个错误有点迷茫。任何提示都非常感谢。太棒了,很有效!找到错误(其他关系上缺少声明)。谢谢你把我提升到下一个层次:)