У меня есть приложение Springboot, которое использует 2 сущности, запрос пользователя и друга.Пользовательский объект выглядит следующим образом:
public class User{
@Id
private BigInteger id;
private String firstName;
private String lastName;
private String email;
private String password;
}
, а объект FriendRequest выглядит следующим образом:
public class FriendRequest{
@Id
private BigInteger id;
private User sender;
private FriendRequestStatus friendRequestStatus;
private User recipient;
}
Класс запроса на добавление в друзья имеет 4 свойства:
Идентификатор
отправитель запроса, который является пользователем
получатель запроса, который также является пользователем
FriendRequestStatus - который может находиться в состоянии ожидания (если запрос не был принят), принят (если запрос о дружбе был принят) или отклонен (если запрос был отклонен).
вместо того, чтобы я создавал таблицу друзей, я хочу использовать таблицу FriendRequest, чтобы получить всех друзей определенного пользователя - он работает, получая запрос всех друзей, когда определенный пользователь отправляет илиПриемник и FriendRequest принимаются.Затем перейдите к выбору Отправителя в качестве друга, если получателем является пользователь, друзей которого вы ищете, и выберите получателя, если Отправителем был пользователь, друзей которого вы ищете.В конце я хочу получить список.
Моя проблема в том, что я не знаю, как добиться этого в MongoDB для springboot, при использовании Postgre это был запрос, который я выполнял, и он работал отлично:
@Query(value = "SELECT * \n" +
"FROM ( \n" +
"SELECT DISTINCT CASE sender WHEN 1 THEN recipient ELSE sender END AS friend_id \n" +
"FROM friendrequest WHERE 1 IN (recipient, sender) \n" +
"AND friendrequeststatus = 'ACCEPTED' \n" +
") f \n" +
"LEFT JOIN users u\n" +
"ON f.friend_id = u.id\n" +
"ORDER BY friend_id \n-- #pageable\n"
,nativeQuery = true)
Page<User> getFriends(Pageable pageable);
но как его реплицировать в MongoDB для Springboot - большая проблема