java - Mongo DB查询的等效JAVA Spring Boot代码是什么
问题描述
我已经编写了 MongoDB 查询以显示上周用户数,基于 Profile 集合中的 lastActive 字段,lastActive 字段是日期字符串。有人可以帮我使用 SimpleDateFormat 类或 LocalDate 类编写相应的 Spring Boot java 代码。请
var today = new Date();
var lastWeekStart = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
var lastWeekEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
var start = new Date(lastWeekStart.setHours(0,0,0,0));
var end = new Date(lastWeekEnd.setHours(23,59,59,999));
db.Profile.aggregate([
{
"$group": {
"_id": null,
"total": { "$sum": 1 },
"LastWeekUsersList": {
"$sum": {
"$cond": [
{
"$and": [
{ "$gte": [ "$lastActive", start ] },
{ "$lte": [ "$lastActive", end ] }
]
},
1,
0
]
}
}
}
}
])
这个怎么写对应的spring boot代码,不知道怎么写mongo db的java等价查询,求大神帮忙
解决方案
你可以尝试这样的事情(未经测试)
@Autowired
private MongoOperations mongoOperations;
public MongoOperations getMongoOperations() {
return mongoOperations;
}
....
Instant start = Instant.parse("2020-07-13T10:30:00.000Z");
Instant end = Instant.parse("2020-07-20T10:37:00.000Z");
Criteria criteria = new Criteria().andOperator(
Criteria.where("lastActive").gt(start),
Criteria.where("lastActive").lt(end)
);
ConditionalOperators.Cond sumCond = ConditionalOperators.when(criteria).then(true).otherwise(false);
GroupOperation groupOperation = Aggregation.group().count().as("total").sum(sumCond).as("LastWeekUsersList");
List<MappedType> mappeRes = getMongoOperations().aggregate(Aggregation.newAggregation(
groupOperation
), "myCollecgtion", MappedType.class).getMappedResults();
推荐阅读
- python - Pandas.read_csv 问题
- c - Windows C 运行时 _close(fd) 未关闭文件
- angularjs - 用于 angularjs+java+jetty webapp 的 SAML 和 ADFS
- android - 无法使用 FirebaseRecyclerViewAdapter 从 Firebase 实时数据库中检索数据
- mysql - MySQL - 我应该如何索引这个表?
- php - Carbon 将 12:00 转换为错误时间
- python - Debian 9 上的 Django - ImportError:没有名为“PROJECT.settings.py”的模块
- python - 如何从同一资源运行两个功能(绘制图形并将无限数据保存到 txt 文件)
- javascript - jQuery on-click 事件为空
- python - Matplotlib 两个轴值重叠