Верните «самый большой поклонник тега» neo4j

#graph #neo4j #cypher #graph-databases #neo4j-apoc

Вопрос:

Я хочу сопоставить блоги, которые наиболее похожи на взаимодействие с определенными тегами (в примере, который я использовал dog), но публиковались в нем менее 10 раз.

Как я могу этого достичь?

В настоящее время я получаю это сообщение об ошибке

 Invalid use of aggregating function count(...) in this context (line 6, column 7 (offset: 210))
"WHERE COUNT(posted) < 10"
 

Запрос

 MATCH (b:Blog)-[r:liked]-(p:Post)-[:tagged]-(t:Tag)
WHERE t.content = "dog"
WITH b, COUNT(r) as interaction_count

MATCH (b:Blog)-[posted:posted_by]-(:Post)-[:tagged]-(t:Tag)
WHERE COUNT(posted) < 10

RETURN b, interaction_count
ORDER BY interaction_count DESC
LIMIT 10
 

Ответ №1:

Ошибка здесь:

 WHERE COUNT(posted) < 10
 

Вам нужно использовать эти агрегации в предложении WITH, как вы делали это с предыдущим подсчетом в запросе.

Измените запрос на этот, и он должен работать:

 MATCH (b:Blog)-[r:liked]-(p:Post)-[:tagged]-(t:Tag)
WHERE t.content = "dog"
WITH b, COUNT(r) as interaction_count

MATCH (b:Blog)-[posted:posted_by]-(:Post)-[:tagged]-(t:Tag)

WITH b,interaction_count, COUNT(posted) as p
WHERE p<10 

RETURN b, interaction_count
ORDER BY interaction_count DESC
LIMIT 10
 

Единственная разница в том, что я разбил ваше «ГДЕ» на шаблон «С/ГДЕ»