Consulta Neo4j Cypher: colha ordem, pegue primeiro n elementos
Estou tendo problemas para escrever uma consulta Cypher para esse tipo de aplicativo de rede social. Envolve usuários que adicionam postagens (essencialmente uma imagem com uma descrição), que os usuários podem revisar.
No Cypher, o modelo gráfico é o seguinte:(user)-[:WROTE_REVIEW]->(review)-[:EVALUATES]->(post)
A consulta que estou tentando gravar deve retornar todas as postagens que um determinado usuário analisou, além de algumas informações gerais sobre as revisões de uma postagem.
Isso inclui:
(o ID do post)a imagem do posta descrição do posto número total de comentários deste posto número total de revisores desta postagemos avatares dos últimos 6 revisores deste post, ordenados até a data da resenha, descendoAcho que consegui completar os primeiros cinco itens, mas o item 6 está me dando problemas. A consulta abaixo me dá todos os avatares, enquanto eu só preciso dos últimos 6.
START user=node(2515)
MATCH (user)-[:WROTE_REVIEW]->()-[:EVALUATES]->(post)
WITH distinct post
MATCH (review)-[:EVALUATES]->(post)
WITH post, count(review) as reviews
MATCH (reviewer)-[:WROTE_REVIEW]->()-[:EVALUATES]->(post)
WITH post, reviews, count(distinct reviewer) as reviewers, collect(distinct reviewer.Avatar) as avatars
ORDER BY post.CreationTime DESC
RETURN post.Id, post.Image, post.Description, reviews, reviewers, avatars;
Alguém pode me mostrar como encomendar os avatares por data de revisão (por exemplo,review.CreationTime
) descendo, e pegue os seis primeiros itens?
Obrigado!