Neo4j-根据关系方向设置不同的属性

Neo4j-根据关系方向设置不同的属性,neo4j,cypher,Neo4j,Cypher,我正在开发一个允许用户在对话中隐藏消息的系统。目前,系统设计为将消息存储为定向为(发件人)-[]->(收件人)的用户之间的关系 我的问题是,我希望任何一个用户都能够只隐藏他们这边的消息。我正在尝试开发代码,以便调用相同的函数,而不管隐藏该函数的用户是发送者还是接收者,但在set语句中使用条件逻辑时遇到问题 我目前的尝试如下所示 如有任何建议,将不胜感激 谢谢 MATCH (userLoggedIn :User {EmailAddress:'email'}) MATCH (userLoggedIn

我正在开发一个允许用户在对话中隐藏消息的系统。目前,系统设计为将消息存储为定向为(发件人)-[]->(收件人)的用户之间的关系

我的问题是,我希望任何一个用户都能够只隐藏他们这边的消息。我正在尝试开发代码,以便调用相同的函数,而不管隐藏该函数的用户是发送者还是接收者,但在set语句中使用条件逻辑时遇到问题

我目前的尝试如下所示

如有任何建议,将不胜感激

谢谢

MATCH (userLoggedIn :User {EmailAddress:'email'})
MATCH (userLoggedIn)-[r:USER_SENTMESSAGE]-(otherUser)
WHERE r.Id = '123456'
SET 
  case when (userLoggedIn)-[r]->(otherUser) 
  then r.HideFromSender = true 
  else r.HideFromReceiver = true 
  end
您需要组合(用于获取方向)和(用于设置属性):

Upd.事实上,从逻辑上讲,您可以让它变得更简单:

MATCH (userLoggedIn:User {EmailAddress:'email'})
      -[r:USER_SENTMESSAGE {Id: '123456'}]-
      (otherUser)
WITH userLoggedIn, r,
     CASE WHEN userLoggedIn = startNode(r) THEN true ELSE false END as ift
SET r.HideFromSender = ift,
    r.HideFromReceiver = NOT ift 

很好用!非常感谢。我一直用这个把头撞在墙上one@GavinHolyday见补充部分
MATCH (userLoggedIn:User {EmailAddress:'email'})
      -[r:USER_SENTMESSAGE {Id: '123456'}]-
      (otherUser)
WITH userLoggedIn, r,
     CASE WHEN userLoggedIn = startNode(r) THEN true ELSE false END as ift
SET r.HideFromSender = ift,
    r.HideFromReceiver = NOT ift