#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
Единственная разница в том, что я разбил ваше «ГДЕ» на шаблон «С/ГДЕ»