zoukankan      html  css  js  c++  java
  • mongo学习笔记(四):java中使用group

    在java中使用mongo的group

    目标:

    private Mongo mg = null;
    private DB db;
    private DBCollection dbCollection;
        
    public void init(String IP,int port,String DB) {
        try {
            mg = new Mongo(IP,port);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (MongoException e) {
            e.printStackTrace();
        }
        //获取DB;如果默认没有创建,mongodb会自动创建
        db = mg.getDB(DB);
    }

    使用group

    public DBObject group(String start,String end,int age)
    {
        dbCollection = db.getCollection("person");
        BasicDBObject cond= new BasicDBObject();
        BasicDBObject dt= new BasicDBObject();
        dt.put("$gte",fromISODate(start));//大于等于
        dt.put("$lt",fromISODate(end));//小于
        cond.put("dt", dt);
        cond.put("age",age);
    
        BasicDBObject key = new BasicDBObject("name", true);
        BasicDBObject initial = new BasicDBObject("person",new ArrayList());
        String reduce = "function(doc,out){out.person.push(doc.name);}";
        String finalize = "function(out){out.count=out.person.length;}";
            
        DBObject list = dbCollection.group(key, cond, initial, reduce, finalize);
            
        return list;
    } 

     mongo中时间格式是IOSDate

    例如:"2015-12-04 00:00:00"

    直接用String转Date =>"2015-12-03T16:00:00Z"

    而我想转成"2015-12-04T00:00:00Z",,比目标少了8小时(时区)

    目前没有什么办法,非常屌丝的写了以下方法,有更好的方法请务必告诉我,谢谢!!

    public static Date fromISODate(String time){   
        Date date=formatDate(time);  
        Calendar ca=Calendar.getInstance();  
        ca.setTime(date);  
        ca.add(Calendar.HOUR_OF_DAY, 8);  
        return ca.getTime();  
    } 
        
    public static Date formatDate(String time){  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        //sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        try {  
            return sdf.parse(time);  
        } catch (ParseException e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  

    最后,调用

    public static void main(String[] args){
        // TODO Auto-generated method stub
        mongoDB4CRUD.init("192.68.68.83", 19000, "test");
        DBObject list = mongoDB4CRUD.group("2015-01-01 00:00:00", "2015-12-01 00:00:00",25);
        JSONArray jsonArray= JSONArray.fromObject(list);
        for(int i=0;i<jsonArray.size();i++)
        {
            JSONObject jo = (JSONObject) jsonArray.get(i);
            System.out.println(jo.get("name").toString());
        }
    }         

     以上代码经过我部分手动修改,不保证编译通过,仅作参考╮(╯▽╰)╭

  • 相关阅读:
    测试我的第一个随笔
    ORB-SLAM2初步
    STL map 简介
    day4-内置函数
    Python学习之路day4-函数高级特性、装饰器
    Python学习之路day3-函数
    Python学习之路day3-字符编码与转码
    Python学习之路day3-文件操作
    Python学习之路day3-集合
    Python学习之路【第二篇】-pyc简介、Python常用的数据类型及其用法和常用运算符
  • 原文地址:https://www.cnblogs.com/margin-gu/p/5019394.html
Copyright © 2011-2022 走看看