我有一个neo4j数据库,其节点遵循此结构
[a:article_id] -[r:about_place]-> [l:location]
现在我想找到article_id,位置对,其中位置有很多传入关系(比如> 4)
MATCH ()-[r:about_place]->(n)
WITH n,count(r) as rel_cnt
where rel_cnt > 4
RETURN n.name,rel_cnt;
这个工作,我得到我需要的位置列表。
但我现在也想要关系中的所有收到的文章,就像中国指出的5篇文章那样。
这样的事,
MATCH (a)-[r:about_place]->(n)
WITH a,n,count(r) as rel_cnt
where rel_cnt > 4
RETURN a.title,n.name,rel_cnt;
但这会返回0行。我猜是因为现在(a,n)组合用在group子句中,这使得count(r)在每一行中总是为1。 我在一次演讲中看到这是count(*)子句默认工作的方式。
我认为解决方案是将这些结果链接起来并提出新的查询,但对于我的生活,我无法弄清楚如何。 任何想法或链接也会有所帮助。
答案 0 :(得分:2)
我不确定是否有更好的方式:
MATCH ()-[r:about_place]->(n)
WITH n, count(r) as rel_cnt
WHERE rel_cnt > 4
MATCH (a)-[r:about_place]->(n)
RETURN a.title,n.name,rel_cnt;
此外,未经请求的说明:
MATCH ()-[r:about_place]->(n:location)
)以获得更好的效果