0
这里是我的暗号查询:可选匹配的Neo4j
MATCH (a : User), (user : User {username : 'lebron'})
WHERE a.phoneNumber IN ['757488374748','+9035115','+90390320303']
AND a.username <> 'lebron'
OPTIONAL MATCH (user)-[f:FOLLOWS]->(a), (a)-[p : POSTS]->(b)
RETURN DISTINCT COLLECT(b.postId) AS postId, a.username AS membername,
f.followRequestStatus AS followRequestStatus, user.private AS userPrivate;
“一个”节点是用户节点,“A”可以张贴照片,跟随其他用户,像其他用户的照片,非常像的Instagram。这里发生的是,只有在节点a和b>之间的关系 - [p:POSTS]存在时,它才会给followRequestStatus(f.followRequestStatus)正确。如果关系'p'不存在,即使关系f存在,也会为关系>'f'返回null。
你的实际问题对我来说不是很清楚。你问如何实现followRequestStatus的正确输出?并且由于'b'是一个新引入的变量(来自'a'的帖子),我正确的是,只要'a'发布了一些东西(这可以通过postIds的集合检测不到的东西),输出followRequestStatus空着)? – InverseFalcon
followRequestStatus必须与是否已发布任何内容无关,它可以为null,0或1,但在这种情况下,对于其不能匹配的所有条件(a) - [p:POSTS] - >(b) ,followRequestStatus作为null出现,即使它具有某些值。 –
好的,明白了。我错误地将你的描述误解为你的要求而不是问题。 – InverseFalcon