查找该用户尚未看过的电影,以及他关注的其他用户已看过的电影

时间:2018-07-16 14:09:34

标签: 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.movieId,u2.id;

1 个答案:

答案 0 :(得分:1)

如@Inversefalcon所述,在同一节点之间存在多种关系类型的情况下,也许您的查询需要具体说明关系类型。

例如(假设您的数据模型具有关系类型FOLLOWSWATCHED):

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

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