您的位置:首页 > 编程语言 > Java开发

mongo学习笔记(四):java中使用group

2015-12-04 15:19 429 查看
在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());
}
}


以上代码经过我部分手动修改,不保证编译通过,仅作参考╮(╯▽╰)╭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: