显示数据库中除此特定用户已阅读 neo4j 之外的所有书籍

Show all the books in database except the ones this specific user has read neo4j

我在 Neo4j 中有一个简单的数据库,其中包含有关用户、他们的朋友和他们阅读的书籍的信息。我需要编写一个查询来显示特定用户的朋友阅读的所有书籍(对当前用户的某种推荐)。 假设我想查看名为“Sophia”的用户的朋友阅读的书籍。我如何在 neo4j 中执行此操作?

my database schema

您应该可以通过运行下面的查询获得那些书:

MATCH (sophia: User {name: "Sophia"})-[:FRIENDS_WITH]->(friends: User)-[:READ]->(book: Book)
RETURN book

如果您只想包含 Sophia 未读过的书籍,下面的查询应该有效:

MATCH (sophia: User {name: "Sophia"})-[:FRIENDS_WITH]->(friends: User)-[:READ]->(book: Book)
WHERE NOT EXISTS ((sophia)-[:READ]->(book))
RETURN book