繁体   English   中英

neo4j 找到所有发布我喜欢的东西的朋友

[英]neo4j find all friends who posted something I liked

我想找到所有发布我喜欢的东西的朋友。 为什么这个查询不返回任何行但每个子句本身都返回一些东西?

 match (start:Person)-[:LIKES]->(post:Post), (start)-[:FRIEND]->(person: Person), (person)-[:POSTED]->(post) return start, post, person

profile01 简介02

感谢您的查询计划。

我们可以看到,在(start)-[:FRIEND]->(person)的扩展中,行数下降到零,因此发生了以下两种情况之一:要么:FRIEND 不是实际的关系类型(可能是不匹配的情况),或者更有可能的是,所有存在的:FRIEND 关系都是相反的方向,传入到起始节点而不是传出。

对于像这样的社交图,因为它们都是:Person 节点,所以无法判断关系是在哪个方向创建的,当您查询时,方向不重要,重要的是:FRIEND 关系存在。

尝试从此处的模式中删除方向: (start)-[:FRIEND]-(person: Person) 如果你的关系类型是正确的,那应该会给你带来正确的结果。

为简单起见,我还将这 3 个模式组合成一个长模式。 这样做将确保它不会提取不适合以后模式的额外模式(被检索,然后稍后过滤掉)。 这是 Cypher 的样子:

MATCH (start:Person)-[:LIKES]->(post:Post)<-[:POSTED]-(person: Person)
WHERE (start)-[:FRIEND]-(person)
RETURN start, post, person

我会从

MATCH (me:Person)-[:FRIEND]-(friend:Person)-[:POSTED]->(post:Post)<-[:LIKES]-(me)
RETURN DISTINCT friend

获取 (friend:Person) 节点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM