如何通过计算一阶和二阶关注者的数量来过滤Twitter用户?

时间:2019-06-03 11:25:17

标签: neo4j cypher

首先,我对这个问题表示歉意。我刚开始是neo4j

我需要找到一个相关的Twitter用户,其关注者总数(包括第一和第二级关注者)为1111。我需要显示关注者的名称和数量。

首先,我只想获取数字1111,然后找到一种显示名称的方法,所以我写了以下内容:

MATCH p = (a:TwitterUser)-[r:FOLLOWS*1..2]->(b:RelevantTwitterUser) 
WITH  COUNT(r) as nf2
WHERE nf2 = 1111
RETURN nf2

结果:

  

(无更改,无记录)

数据库信息:

enter image description here

2 个答案:

答案 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的两个不同的跟随者节点。