gpt4 book ai didi

neo4j - 从 Neo4J 中的 MATCH 查询中排除一些返回结果

转载 作者:行者123 更新时间:2023-12-01 04:37:06 25 4
gpt4 key购买 nike

我正在使用下面的 MATCH 查询(指用户评论书籍):

MATCH (u:User {id:15})-[r:REVIEW]->(b:Book)
WITH u,b
MATCH (t:User)-[r:REVIEW]->(b)
RETURN distinct t

该密码首先匹配id=15的用户评论过的书籍。然后它使用另一个 MATCH 命令来查找任何其他用户,该用户已经评论过 id=15 的用户评论过的任何书籍。但是,返回的用户也包括 id=15 的用户。我怎样才能排除他?

请注意,我使用“distinct”命令是为了避免同一用户出现 2 次或更多次。 F.e.如果用户 (id=15) 已经评论了 2 本书,而另一个用户也评论了这两本书,我会得到最后一个用户 2 次而没有 'distinct'。

最佳答案

另一种选择是在单个模式中捕获您想要的内容,如下所示:

MATCH (u:User{id:15})-[:REVIEW]->(b:Book)<-[:REVIEW]-(t:User)
RETURN distinct t

当你有一个像这样的 MATCH 子句和模式时,因为我们区分了 ut 变量,它永远不会匹配 t

如果你想要一个速记版本(假设 :Book 节点是 :Users 唯一可以 :REVIEW 的东西,并且 :Users 是唯一可以 :REVIEW :Books 的节点类型),那么你可以将其缩短为:

MATCH (u:User{id:15})-[:REVIEW*2]-(t:User)
RETURN distinct t

关于neo4j - 从 Neo4J 中的 MATCH 查询中排除一些返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com