mongo的概念就不介绍了,可以参考:http://www.runoob.com/mongodb/mongodb-tutorial.html
本文基于springboot项目。
1、连接配置,使用自动配置方式,在applicaiton.properties中配置连接信息即可
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=mongdbname
2、java中使用
注入mongoTemplate对象
@Autowired private MongoTemplate mongoTemplate;
Criteria类:它封装所有的语句,以方法的形式进行查询。
Query类:这是将语句进行封装或者添加排序之类的操作。
mongo查询语句:db.vaabs_monthly.find({"areaCode":/.*0000$/})
java代码:
Pattern queryPattern = Pattern.compile(".*0000$", Pattern.CASE_INSENSITIVE);
Criteria criAreaCode = new Criteria();
criAreaCode.andOperator(Criteria.where("areaCode").regex(queryPattern));
Query queryAreaCode = new Query(criAreaCode);
例子:其中mongo语句和java中操作不完全相同,java中主要是为了使用索引,查询两次,效果是一样的。 public List<Vaabs_monthly> getRankCountryApi() { //db.vaabs_monthly.find({"$and":[{"indusId":300},{"areaCode":/.*0000$/}]}).sort({"date":-1,"value":-1}).limit(31) List<ValueData> dataList = new ArrayList<ValueData>(); Pattern queryPattern = Pattern.compile(".*0000$", Pattern.CASE_INSENSITIVE); Criteria criAreaCode = new Criteria(); criAreaCode.andOperator(Criteria.where("areaCode").regex(queryPattern)); Query queryAreaCode = new Query(criAreaCode); List<AreaCodeMapping> provinceAreaCodes = mongoTemplate.find(queryAreaCode, AreaCodeMapping.class);//获取所有省areaCode List<String> areaCodes = new ArrayList<String>(); for(AreaCodeMapping areaCodeMapping:provinceAreaCodes){ areaCodes.add(areaCodeMapping.getAreaCode()); } Criteria criteria = new Criteria(); criteria.andOperator( Criteria.where("indusId").is(300), Criteria.where("areaCode").in(areaCodes)); Query query = new Query(criteria); query.with(new Sort(new Order(Direction.DESC,"date"),new Order(Direction.DESC, "value"))); query.limit(31); List<Vaabs_monthly> resultRankAbs = mongoTemplate.find(query, Vaabs_monthly.class); return resultRankAbs; }