如何在Neo4j中与OR条件匹配

时间:2017-07-16 14:54:48

标签: neo4j cypher

我有User,Item和Comment类型的节点。用户可以喜欢一个项目。用户可以发表评论,评论可以POSTED_IN一个项目。

我正在尝试查找由特定用户(或两者)赞成或评论的所有项目。我正在使用的查询是:

MATCH (u:User {id: 'r1tcX0vxW'}) 
WHERE (u)-[:LIKES]->(i:Item) 
OR 
(comment:Comment)-[:POSTED_BY]->(u) AND (i:Item)<-[:POSTED_IN]-(comment)  
RETURN i;

但是,此查询存在语法错误。

我也想过通过OPTIONAL MATCH做这件事,但我不知道如何做到这一点。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

尝试这个

MATCH (u:User {id: 'r1tcX0vxW'})-[:LIKES]->(i:Item) 
RETURN i 
UNION 
MATCH (u)<-[:POSTED_BY]-(:Comment)-[:POSTED_IN]->(i:Item) 
RETURN i;