MongoTemplate操作mongodb


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM