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()); } }
以上代码经过我部分手动修改,不保证编译通过,仅作参考╮(╯▽╰)╭