zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    ECMAScript 2016(ES7) 知多少
    PyCharm连接远程服务器
    PyCharm远程开发和调试
    SecureCRT使用帮助
    NLP文本相似度
    程序控制结构--案例
    程序控制结构--选择结构
    程序控制结构--条件表达式
    Python序列结构--集合
    Python序列结构--字典
  • 原文地址:https://www.cnblogs.com/fengmao/p/8259775.html
Copyright © 2011-2022 走看看