spring - 如何在 Mongo 标准查询(Spring Boot)中使用“$dateToString”
问题描述
我使用 SpringBoot(v1.5.10)、SpringData 和 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 数 5
2011-01-16 数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 计数 1
2011-01-10 09:15:00 计数 1
Mongo 没有“时间”的聚合组日期时间,我尝试类似的条件查询不起作用,因为组与时间部分。如何在条件查询中使用“$dateToString”
解决方案
我解决了。
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.project("ip","datetime").andExpression("datetime").dateAsFormattedString("%d-%m-%Y").as("formateddate"));
aggregationoperations.add(Aggregation.group("ip","formateddate").count().as("TOT"));
AggregationResults<?> aggregationresults = this.mngT.aggregate(Aggregation.newAggregation(aggregationoperations), Login.class, Object.class);
推荐阅读
- python-3.x - 永无止境 pandas.to_numeric
- javascript - 如何确定 AJAX 请求被发送到哪里?
- php - 在PHP字符串中从左到右逐步删除单词
- css - css grid - 如果它是唯一的行,如何将一个项目拉伸到满
- javascript - PhpStorm 将输出选项“clean”高亮显示为 webpack 配置中的无效选项
- c - 实现 IRQ 时出现无效的操作码异常
- reactjs - 如何在材质 Ui Grid 中居中元素
- python - 为什么 PyCharm 告诉我可以在分配之前引用我的变量之一?
- c# - 将.net图像转换为没有标题的字节数组
- excel - 使用excel公式跟踪跳过的步骤