首先,我对这个问题表示歉意。我刚开始是neo4j
我需要找到一个相关的Twitter用户,其关注者总数(包括第一和第二级关注者)为1111。我需要显示关注者的名称和数量。
首先,我只想获取数字1111,然后找到一种显示名称的方法,所以我写了以下内容:
MATCH p = (a:TwitterUser)-[r:FOLLOWS*1..2]->(b:RelevantTwitterUser)
WITH COUNT(r) as nf2
WHERE nf2 = 1111
RETURN nf2
结果:
(无更改,无记录)
数据库信息:
答案 0 :(得分:0)
当我返回 userName 时,问题已解决。
出于好奇,如果有人知道如何做而不必返回用户名,我会在评论中给出+1 。
可能性:
1
MATCH (a:TwitterUser)-[f:FOLLOWS*1..2]->(b:RelevantTwitterUser)
WITH b.userName as user , COUNT(f) as nf2
WHERE nf2 = 1111
RETURN user, nf2
2
MATCH (a:TwitterUser)-[f:FOLLOWS*1..2]->(b:RelevantTwitterUser)
WITH b.userName as user , COUNT(*) as nf2
WHERE nf2 = 1111
RETURN user, nf2
[...]
答案 1 :(得分:0)
[已更新]
在您的查询中,由于r
是关系的列表,COUNT(r)
只会返回列表的数量(而不是每个列表或所有列表的大小-尤其是所有列表中与众不同的项目的数量)。
以下查询应返回用户u
的1111个不同关注者的列表(如果确实存在的话)。 (不必返回计数,因为它总是1111。)
MATCH p = (u:TwitterUser)-[:FOLLOWS*..2]->(:RelevantTwitterUser)
UNWIND TAIL(NODES(p)) AS follower
WITH u, COLLECT(DISTINCT follower) AS followers
WHERE SIZE(followers) = 1111
RETURN u, followers;
UNWIND
子句获取匹配的跟随者节点,而WITH
子句使用带有COLLECT
选项的aggregating function DISTINCT
来获取列表。 u
的两个不同的跟随者节点。