Как отфильтровать пользователя твиттера, посчитав количество подписчиков 1-го и 2-го порядка? - PullRequest
0 голосов
/ 03 июня 2019

Прежде всего прошу прощения за вопрос.Я только начал с neo4j

Мне нужно найти соответствующего пользователя в Твиттере, чье число подписчиков, считая подписчиков первого и второго уровня вместе, равно 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 голосов
/ 03 июня 2019

[ОБНОВЛЕНО]

В вашем запросе, поскольку r представляет собой список отношений, COUNT(r) просто возвращает количество списков (не размер каждого списка иливсе списки - и особенно не количество отдельных элементов во всех списках).

Следующий запрос должен вернуть список из 1111 различных подписчиков, если их действительно так много,для пользователя u.(Нет необходимости возвращать счетчик, поскольку он всегда будет 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 с опцией DISTINCT для получения списка отдельных узлов-подписчиков для u.

0 голосов
/ 03 июня 2019

Проблема была решена, когда у меня есть ВОЗВРАТ 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

[...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...