i use SpringBoot(v1.5.10),SpringData and MongoDb;
db.login.aggregate(
[
{
"$match" : {
"user._id" : NumberLong(204)
}
},
{
"$group" : {
"_id" : {
"datetime" : { $dateToString: { format: "%d-%m-%Y", date: "$datetime"}},
"ip" : "$ip",
},
count: { $sum: 1 }
}
}
]);
- 2011-01-10 count 5
2011-01-16 count 16
Criteria criteria = Criteria.where("user._id").is(paramuserid).andOperator( Criteria.where("datetime").gte(paramfirstdate), Criteria.where("datetime").lt(paramseconddate) ); AggregationOperation match = Aggregation.match(criteria); List<AggregationOperation> aggregationoperations = new ArrayList <AggregationOperation>(); aggregationoperations.add(match); aggregationoperations.add(Aggregation.group("datetime")); AggregationResults<?> aggregationresults = this.mngT.aggregate(Aggregation.newAggregation(aggregationoperations), Login.class, Object.class);2011-01-10 09:00:01 count 1
2011-01-10 09:15:00 count 1
Mongo aggregate group datetime without "time" , I try similar criteriaquery not working because group with time part. How to use "$dateToString" in criteriaquery