如何用具有和关系的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;
}

cityaddress 对象的一部分

.addCriteria(Criteria.where("city")

应该是

.addCriteria(Criteria.where("address.city")