Отличный ответ от @barbakini, но это также может быть сделано без создания собственной реализации репозитория с Criteria, просто «опишите», какие поля вы хотели бы получить, где
ользуюspring boot 1.5.1
а такжеMongoDB version 3.4.6
.
У меня есть Монго документ Отель, в котором есть список отзывов.
Review
класс имеет свойствоuserName
.
@Document
public class Hotel {
@Id
private String id;
private List<Review> reviews;
Я хочу найти все отели по отзыву userName.
мойHotelRepository
имеетpublic List<Hotel> findByReviewsUserName(String userName);
Когда я звоню с пользователем "Салман" -
List<Hotel> list = this.hotelRepository.findByReviewsUserName(user);
этот метод возвращает результат, как показано ниже:
[
{
"id": "59b23c39c70ff63135f76b14",
"name": "Signature",
"reviews": [
{
"id": 1,
"userName": "Salman",
"rating": 8,
"approved": true
},
{
"id": 2,
"userName": "Shahrukh",
"rating": 5,
"approved": false
}
]
}
]
Что я хочу, чтобы отзывы только о «Салман», но он также возвращается и для других.
Чего мне не хватает или как это сделать?
Что я заметил, так это то, что если один пользователь-рецензент совпал, он возвращает полный список рецензий, которые мне не нужны, мне нужны рецензии, которые я искал по имени.