Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 根据条件更改属性_Neo4j_Cypher - Fatal编程技术网

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”是从我的角度设置的,所以我对这个错误有点迷茫。任何提示都非常感谢。太棒了,很有效!找到错误(其他关系上缺少声明)。谢谢你把我提升到下一个层次:)