MongoDB语句转转java实现

关于MongoDB命令转java实现:使用mongodb-driver.jar驱动

db.test.aggregate(
    [
        {
            $project: 
                { 
                        dt:
                            {
                                $dateToString: 
                                {
                                    format: "%Y-%m-%d %H:%M:%S:%L", date:{"$add":[new Date(0),"$time",28800000]}
                                }
                            }
                }
        },
        {
            $group: 
            {
                _id:"$dt"
            }
        }
    ]
);

请问上述命令使用java该怎么实现?
我尝试使用:

DBCollection coll = getDBCollection(dbName,collectionName);
        List<DBObject> pipeline = new ArrayList<>();

        String projectStr = "{$project:{dt:{$dateToString: {format: '%Y-%m-%d %H:%M:%S:%L', date:{'$add':[new Date(0),'$ti',28800000]}}}}";
        DBObject project = (DBObject) com.mongodb.util.JSON.parse(projectStr);
        pipeline.add(project);

        String groupStr = "{$group:{_id:'$ti'}}";
        DBObject group = (DBObject) com.mongodb.util.JSON.parse(groupStr);
        pipeline.add(group);

        AggregationOutput out = coll.aggregate(pipeline);
        System.out.println(out.results());

但是projectStr不能转成DBObject。后来又尝试使用

 Document sub_project = new Document();
        sub_project.put("dt", "{$dateToString:{format:'%Y-%m-%d %H',date:{$add:[new Date(0),'$ti',28800000]}}}");
        Document project = new Document("$project", sub_project);

        Document sub_group = new Document();
        sub_group.put("_id", "$dt");
        Document group = new Document("$group", sub_group);
        List<Document> aggregateList = new ArrayList<Document>();
        aggregateList.add(project);
        aggregateList.add(group);

        JSONObject ret_obj = new JSONObject();
        AggregateIterable<Document> resultset = collection.aggregate(aggregateList);
                while(cursor.hasNext()) {
                Document item_doc = cursor.next();
                System.out.println(">>>>>"+item_doc);
            }

结果输出的内容是:

>>>>>{_id={$dateToString:{format:'%Y-%m-%d %H',date:{$add:[new Date(0),'$ti',28800000]}}}}}

请问到底该怎么实现?

终于实现了。。。方法如下:

 Map map=new HashMap();
        map.put("format","%H");
        map.put("date",new Document("$add",Arrays.asList(new Date(0),"$ti")));
        Document groupFiles=new Document();
        groupFiles.put("dt",new Document("$dateToString", map));

        Document project = new Document("$project", groupFiles);

        Document sub_group = new Document();
        sub_group.put("_id", "$dt");
        Document group = new Document("$group", sub_group);
        List<Document> aggregateList = new ArrayList<Document>();
        aggregateList.add(project);
        aggregateList.add(group);

        AggregateIterable<Document> resultset = collection.aggregate(aggregateList);
        MongoCursor<Document> cursor = resultset.iterator();