У меня есть список объектов на Java. ChatDTO имеет список ChatReceiver.
Структура ChatDTO выглядит следующим образом:
public class ChatDTO {
@Id
String uuidMessage;
List<ChatReceiver> chatReceiver;
public ChatDTO() {
}
public List<ChatReceiver> getChatReceiver() {
return chatReceiver;
}
public void setChatReceiver(List<ChatReceiver> chatReceiver) {
this.chatReceiver = chatReceiver;
}
public String getUuidMessage() {
return uuidMessage;
}
public void setUuidMessage(String uuidMessage) {
this.uuidMessage = uuidMessage;
}
}
И структура ChatReceiver выглядит следующим образом:
public class ChatReceiver {
String uuiUser;
Boolean received;
Date receivedDate;
public ChatReceiver() {
}
public String getUuiUser() {
return uuiUser;
}
public void setUuiUser(String uuiUser) {
this.uuiUser = uuiUser;
}
public Boolean getReceived() {
return received;
}
public void setReceived(Boolean received) {
this.received = received;
}
public Date getReceivedDate() {
return receivedDate;
}
public void setReceivedDate(Date receivedDate) {
this.receivedDate = receivedDate;
}
}
Мне нужно запросить элемент в списке ChatReceivers, используя Java, но я не знаю, как это сделать правильно. Я попробовал следующее, но не получил ожидаемого результата.
List<AggregationOperation> list = new ArrayList<>();
list.add(Aggregation.match(Criteria.where("chatReceiver").in(uuidReceiver).and("received").is(false).and("read").is(false)));
TypedAggregation<ChatDTO> agg = Aggregation.newAggregation(ChatDTO.class, list);
List<ChatDTO> chatDTOList = mongoOperations.aggregate(agg, ChatDTO.class, ChatDTO.class).getMappedResults();
Как вы могли видеть, мне нужно получить все ChatDTO, которые содержат ChatReceiver, который содержит определенный параметр (uuidUser), и где логическое значение "Received" равно false. Другими словами, мне нужны все ChatDTO, которые не были получены определенным пользователем.
Можете ли вы помочь мне с этим запросом? Буду премного благодарен.