Reputation: 4719
In my spring boot project, I am using MongoTemplate.
My mongo document is Hotel looks this:-
[
{
"id": "601183876b7b976bd0a48b03",
"name": "Club",
"pricePerNight": 90,
"address": {
"city": "Espoo",
"country": "Finland"
},
"reviews": [
{
"userName": "Masi",
"rating": 9,
"approved": true
}
]
}
]
In my service class, I am trying to find as follows. My target is to find a hotel where the city name is an exact match and within a max price range. Following query don't find anything. What is wrong?
public List<Hotel> findRecommended(int maxPrice, String city){
Query query = new Query()
.addCriteria(Criteria.where("city").is(city)
.andOperator(Criteria.where("pricePerNight").lte(maxPrice)))
.with(Sort.by(Sort.Order.desc("pricePerNight")))
.limit(4);
List<Hotel> result = mongoTemplate.find(query, Hotel.class);
return result;
}
Upvotes: 0
Views: 120
Reputation: 22974
city
is part of address
object
.addCriteria(Criteria.where("city")
should be
.addCriteria(Criteria.where("address.city")
Upvotes: 1