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;
        }
  • 相关阅读:
    原则之读书笔记(生活篇)
    为 Nginx 添加 HTTP 基本认证(HTTP Basic Authentication)
    Linux搜索所有文件中的内容
    Js实现Table动态添加一行的小例子
    Android必学之数据适配器BaseAdapter
    技术共享之常见的6中种方法检测手机是否是虚拟机
    修改MySql数据库的默认时
    space.php
    self.location.href
    宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git
  • 原文地址:https://www.cnblogs.com/fengmao/p/8259775.html
Copyright © 2011-2022 走看看