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; }