У меня есть следующий запрос:Проверьте, пользователю понравился пост
MATCH (user:User)-[:CREATED]->(post:Post)
WITH user, post
ORDER BY post.createdAt DESC
OPTIONAL MATCH (post)<-[:BELONGS_TO]-(comment:Comment)<-[:COMMENTED]-(:User)
WITH user, post, liked, comment
ORDER BY comment.timestamp DESC
WITH user, post, liked, COLLECT(comment)[0..4] AS comments
RETURN post,
{ username: user.username,
firstName: user.firstName,
lastName: user.lastName,
profilePicture: user.profilePicture
} AS createdBy,
size((post)<-[:LIKES]-(:User)) AS likes,
liked,
comments
SKIP {skip}
LIMIT {limit}
Запрос получает список сообщений и вычисляет другие вещи, как: ПОЛУЧИТЬ оставлять комментарии, получить пользователь, который создал этот пост, получить общее количество нравится.
Мне также нужно рассчитать, понравилось ли мне сообщение или нет, что приведет к: userLiked (true | false).
Я думал что-то вроде:
OPTIONAL MATCH (post)<-[userLiked:LIKES]-(:User {uuid: {userUUID}})
Для этого SKIP и LIMIT - не работает, если я хочу постраничной результаты. –
Ах, имеет смысл, если вы хотите сначала заказать отметку времени. Я переместил SKIP и LIMIT непосредственно перед возвратом, что должно по-прежнему предотвращать ненужные операции с результатами, которые не отображаются на странице, которую вы планируете возвращать. – InverseFalcon
В основном я хочу, чтобы самые новые сообщения сначала содержат самые свежие комментарии для каждого сообщения. Похоже, ваш отредактированный пост отлично работает. Спасибо! –