Neo4j 查找用户没有看过的电影,以及他关注的其他用户看过的电影

Neo4j 查找用户没有看过的电影,以及他关注的其他用户看过的电影,neo4j,cypher,Neo4j,Cypher,我有一个包含电影和用户的数据库。用户可以相互跟踪并对电影进行评级。我有一个id为599的用户。我想找到所有他没有看过的电影,而他关注的其他用户都看过。这是我到目前为止试过的。我确实得到了一个结果,它是有效的,但数字并没有真正相加,所以我认为可能有问题 MATCH (u:user {id:599}),(m2:Movie), (u2:user),(u)-[r]->(u2),(u2)-->(m2) WHERE not (u)-->(m2) RETURN m2.title, m2.m

我有一个包含电影和用户的数据库。用户可以相互跟踪并对电影进行评级。我有一个id为599的用户。我想找到所有他没有看过的电影,而他关注的其他用户都看过。这是我到目前为止试过的。我确实得到了一个结果,它是有效的,但数字并没有真正相加,所以我认为可能有问题

MATCH (u:user {id:599}),(m2:Movie), (u2:user),(u)-[r]->(u2),(u2)-->(m2) 
WHERE not (u)-->(m2)
RETURN m2.title, m2.movieId,u2.id;

正如@Inversefalcon所述,如果同一节点之间存在多种类型的关系,那么您的查询可能需要具体说明关系类型

例如,假设您的数据模型具有以下关系类型:


如果这不能解决您的问题,那么请提供一些示例数据以及您预期的结果数。

在查询中使用关系类型确实会有帮助,因为这将确保您不会从不适用于所需内容的备用关系中获取计数。
MATCH (u:user {id:599})-[:FOLLOWS]->(u2:user)-[:WATCHED]->(m2:Movie)
WHERE not (u)-[:WATCHED]->(m2)
RETURN m2.title, m2.movieId, u2.id;