作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用以下查询从我的 mongo 文档中的 ISODate 数据类型获得了“仅日期”结果:
db.getCollection('tournamentactivity').aggregate( [
{
$project:{
"yearMonthDay":
{
"$dateToString" :
{
"format" : "%Y-%m-%d",
"date" : "$activityDate"
}
},
"tid" : 1,
"dayActivity.type" : 1
}
},
{
$match:{
$and : [
{ "tid" : "12345678" },
{ "yearMonthDay" : "2017-11-05" }
]
}
}] )
到这里一切都很好。但我试图在 Java 对象中转换相同的内容,因为我必须在响应类型中发送相同的内容。
我遵循了本教程:Projections 并尝试在我的 Java 代码中执行相同的操作,如下所示:
ProjectionOperation projectToMatchModel = project().
andExpression("format").as("%Y-%m-%d").
andExpression("date").as("$activityDate");
我之前已经编写过聚合操作,但我不知道如何在Java代码中转换这个结果/查询。
任何人都可以指导我哪里出了问题以及如何在聚合聚合 = newAggregation( );方法?
谢谢。
仅供引用:我不知道如何在聚合对象中转换此查询,并且我可能在选择投影操作时是错误的。如果我错了,请对我宽容一点!
最佳答案
您可以尝试以下聚合。
添加以下导入
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
import static org.springframework.data.mongodb.core.aggregation.Fields.field;
import static org.springframework.data.mongodb.core.aggregation.Fields.from;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.DateOperators;
选项1(使用扩展方法)
Aggregation aggregation = newAggregation(
project(from(field("dayActivity.type", "dayActivity.type"),
field("tid"))).
and("activityDate").dateAsFormattedString("%Y-%m-%d").as("yearMonthDay"),
match(where("yearMonthDay").is("2017-11-05").and("tid").is("12345678"))
);
选项 2(使用聚合表达式)
Aggregation aggregation = newAggregation(
project(from(field("dayActivity.type", "dayActivity.type"),
field("tid"))).
and(DateOperators.dateOf("activityDate").toString("%Y-%m-%d")).as("yearMonthDay"),
match(where("yearMonthDay").is("2017-11-05").and("tid").is("12345678"))
);
关于java - 如何将 MongoDB 结果从 $dateToString 操作转换为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47220323/
我是一名优秀的程序员,十分优秀!