Я пытался писать для преобразования команды оболочки mongo в Java-запрос поверх драйвера java mongo, чтобы вызвать его в моем проекте webapp: команда состоит в следующем:MongoDB: как сгруппировать по дате с агрегированием даты mongo с помощью java-драйвера
db.post.aggregate(
{
$match: { dateCreated:
{
"$gt": new ISODate("2013-08-09T05:51:15.000Z"),
"$lt": new ISODate("2013-08-09T05:51:20.000Z")
}
}
},
{
$group: {
_id: {
hour: {$hour: "$dateCreated"},
minute: {$minute: "$dateCreated"},
second: {$second: "$dateCreated"}
},
cnt: {$sum : 1}
}
}
)
запрос выше выходов привести ниже в формате MONGO оболочки:
{
"result" : [
{
"_id" : {
"hour" : 5,
"minute" : 51,
"second" : 19
},
"cnt" : 26
},
{
"_id" : {
"hour" : 5,
"minute" : 51,
"second" : 18
},
"cnt" : 29
},
{
"_id" : {
"hour" : 5,
"minute" : 51,
"second" : 17
},
"cnt" : 27
},
{
"_id" : {
"hour" : 5,
"minute" : 51,
"second" : 16
},
"cnt" : 25
},
{
"_id" : {
"hour" : 5,
"minute" : 51,
"second" : 15
},
"cnt" : 16
}
],
"ok" : 1
}
я потерпел неудачу в письменном виде тот же запрос в Java, используя драйвер Java MONGO. Ниже мой запрос:
DBObject matchStart = new BasicDBObject("$match",new BasicDBObject("dateCreated",new BasicDBObject("$gt",startTime).append("$lt",endTime)));
DBObject field = new BasicDBObject("dateCreated",1);
field.put("h", new BasicDBObject("$hour","$dateCreated"));
field.put("m", new BasicDBObject("$minute","$dateCreated"));
field.put("s", new BasicDBObject("$second","$dateCreated"));
DBObject project = new BasicDBObject("$project",field);
DBObject groupField = new BasicDBObject("_id","$s");
groupField.put("count", new BasicDBObject("$sum",1));
DBObject group = new BasicDBObject("$group",groupField);
AggregationOutput output = mongoOperations.getCollection("post").aggregate(matchStart,project,group);
return output;
он возвращает ResultSet ниже:
{"result" : [
{ "_id" : 19 , "count" : 26} ,
{ "_id" : 18 , "count" : 29} ,
{ "_id" : 17 , "count" : 27} ,
{ "_id" : 16 , "count" : 25} ,
{ "_id" : 15 , "count" : 16}
] ,
"ok" : 1.0}
Я имею проблемы делая запрос включают минутную часть и часть часа. Как можно настроить мой запрос для вывода того же набора результатов, что и в оболочке mongo.
Спасибо за глядя на эту
кого !? кто-нибудь широко использовал функции агрегации групп монга с java-драйвером –