如何用具有和关系的2个条件查询MongoDB
How to query MongoDB with 2 conditions that has and relation
在我的 spring 引导项目中,我正在使用 MongoTemplate。
我的 mongo 文件是酒店看起来是这样的:-
[
{
"id": "601183876b7b976bd0a48b03",
"name": "Club",
"pricePerNight": 90,
"address": {
"city": "Espoo",
"country": "Finland"
},
"reviews": [
{
"userName": "Masi",
"rating": 9,
"approved": true
}
]
}
]
在我的服务class中,我试图找到如下内容。我的目标是找到城市名称完全匹配且在最高价格范围内的酒店。以下查询未找到任何内容。怎么了?
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;
}
city
是 address
对象的一部分
.addCriteria(Criteria.where("city")
应该是
.addCriteria(Criteria.where("address.city")
在我的 spring 引导项目中,我正在使用 MongoTemplate。
我的 mongo 文件是酒店看起来是这样的:-
[
{
"id": "601183876b7b976bd0a48b03",
"name": "Club",
"pricePerNight": 90,
"address": {
"city": "Espoo",
"country": "Finland"
},
"reviews": [
{
"userName": "Masi",
"rating": 9,
"approved": true
}
]
}
]
在我的服务class中,我试图找到如下内容。我的目标是找到城市名称完全匹配且在最高价格范围内的酒店。以下查询未找到任何内容。怎么了?
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;
}
city
是 address
对象的一部分
.addCriteria(Criteria.where("city")
应该是
.addCriteria(Criteria.where("address.city")