我有一个搜索表单用于在我的网络应用程序中搜索房屋。表格包含以下字段,
private String type;
private Long minPrice;
private Long maxPrice;
private Integer minBedRooms;
当使用在所有字段中输入数据时,此表单用于搜索房屋。例如,用户分别在所有字段中输入数据"Rent 200 5000 2"
。我对此的疑问是
Query query = new Query(where("type")
.is(form.getType())
.and("bedrooms")
.is(form.getMinBedRooms())
.andOperator(where("price").lte(form.getMaxPrice()),
where("price").gte(form.getMinPrice())));
现在,当我将上述某个字段留空时,会返回0
个结果。例如,当maxPrice
为null时,它会返回0
个结果。我的问题是我应该如何编写上面的查询,以便它可以设置空值。例如,我将maxPrice
和minBedRooms
字段留空,它将根据type
和minPrice
我使用spring 4.和spring数据与mongoDB
我已经坚持了两天,我将非常感谢任何帮助。 的问候,
答案 0 :(得分:2)
以下是等效的,但在其周围添加逻辑测试
Query query = new Query();
if (form.getType() != null) {
query.addCriteria(Criteria.where("type")
.is(form.getType());
}
if (form.getMinBedrooms() != 0) {
query.addCriteira(Criteria.where("bedrooms")
.is(form.getMinBedRooms())
}
等等。所以只需使用Query对象并添加条件。