1 or与and复杂条件查询
下面用Mongo实现关系型数据库SQL:select * from where (name="张三" and sex="男") or age >=30
。
1.1 MongoDB方式查询
// 第一步:实现 (name="张三" and sex="男") db.getCollection('user').find( {"$and":[{"name":"张三"},{"sex":"男"}]} ) // 第二步:实现 age >30 db.getCollection('user').find( {"$or":[{"age":{$gte:30}}]} ) // 第三步:将第一步参数拼接到第二步or条件里,实现最终结果 db.getCollection('user').find( { "$or": [ {"$and":[{"name":"张三"},{"sex":"男"}]}, {"age":{"$gte":30}} ] } )
1.2 spring-data-jpa mongotemplate 方式查询
// 第一步:实现 (name="张三" and sex="男") query.addCriteria( new Criteria().andOperator( Criteria.where("name").is("张三"), Criteria.where("sex").is("男") ) ); // 第二步:实现 age >30 query.addCriteria( new Criteria().orOperator( Criteria.where("age").gte(30) ) ); // 第三步:将第一步参数拼接到第二步or条件里,实现最终结果 query.addCriteria( new Criteria().orOperator( new Criteria().andOperator( Criteria.where("name").is("张三"), Criteria.where("sex").is("男") ), Criteria.where("age").gte(300) ) );