mongodb使用and配合or查询
使用mongodb时,有时需要使用and配合(嵌套)or查询。
实现类似以下sql的语句:
select * from MongoDbTest where status=1 and (userId="abc" or price>=2)
对应的 mongodb语句如下:
db.getCollection("mongoDbTest").find({ "status" : 1, "$and" : [{ "$or" : [{ "userId" : "abcd" }, { "price" : { "$gte" : 2 } }] }] })
代码示例如下:
/**
* mongodb使用and配合or查询。
* 以下相当于 sql:
* select * from MongoDbTest where status=1 and (userId="abc" or price>=2)
*/
public void andOrOperator() {
Criteria criteria = Criteria.where("status").is(1);
Criteria criteria1 = Criteria.where("userId").is("abc");
Criteria criteria2 = Criteria.where("price").gte(2);
Criteria criteria3 = new Criteria().orOperator(criteria1, criteria2);
criteria.andOperator(criteria3);
Query query = Query.query(criteria);
List<MongoDbTest> list = mongoTemplate.find(query, MongoDbTest.class);
System.out.println("MongoDbTest list:" + JSON.toJSONString(list));
}