Neo4J Cypher:仅当属性为 null 时才设置属性,但仍返回节点

alm*_*man 0 neo4j cypher

我对 Neo4J 很陌生,并且正在努力解决以下问题:

我只想在属性尚不存在时设置属性(如果它为空),并且不想设置属性(如果存在)。我如何修改下面的查询来实现这一点

  MATCH (u:User)
  WHERE u.uuid=$userId
  SET u.unsubscribedAt = timestamp()
  RETURN u
Run Code Online (Sandbox Code Playgroud)

提前致谢

更新1:我忘记提到的一件事:无论如何我仍然想返回节点,所以不能添加AND u.unsubscribedAt is nullwhere子句

Tho*_*ars 7

您可以使用合并来实现此目的。它返回传递的第一个非空值,因此它将解析现有值(如果已经存在)

  MATCH (u:User)
  WHERE u.uuid=$userId
  SET u.unsubscribedAt = coalesce(u.unsubscribedAt, timestamp())
  RETURN u
Run Code Online (Sandbox Code Playgroud)