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