用Spring MongoTemplate实现根据时间倒序查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Spring MongoTemplate实现根据时间倒序查询相关的知识,希望对你有一定的参考价值。
mysql可以这么写SELECT * FROM tablename ORDER BY create_time DESC LIMIT 5
但是用MongoTemplate只能写到这里 ,不知道怎么倒序
Query query = Query.query(Criteria.where("sysName").is(Constant.SYS_TYPE_PORTAL).and("userName").is(account)).limit(5);
求知道的朋友指点一下.
Mongotemplate聚合java spring GroupBy
【中文标题】Mongotemplate聚合java spring GroupBy【英文标题】:Mongo Template Aggregtion java spring GroupBy 【发布时间】:2020-09-28 10:10:59 【问题描述】:db.billingDomain.aggregate([
$group:
_id:
day: $dayOfMonth: "$createdAt" ,
month: $month: "$createdAt" ,
year: $year: "$createdAt"
,
count:
$sum: 1
,
date:
$first: "$createdAt"
,
$project:
date:
$dateToString:
format: "%Y-%m-%d",
date: "$date"
,
count: 1,
_id: 0
,
$match:
"date":
$gte: "2020-06-05"
])
如何在 Spring Java 中使用 mongo Template、Aggregation 构建此查询?进行此查询时面临挑战
【问题讨论】:
【参考方案1】:Spring Mongo
并不支持所有的 MongoDB 语法,所以我们需要手动实现AggregationOperation
(Java >=v1.8
):
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
import static org.springframework.data.mongodb.core.query.Criteria.*;
import static org.springframework.data.mongodb.core.aggregation.DateOperators.*;
Aggregation agg = newAggregation(
op -> new Document("$group",
new Document("_id",
new Document("day", new Document("$dayOfMonth", "$createdAt"))
.append( "month", new Document("$month", "$createdAt"))
.append( "year", new Document("$year", "$createdAt")))
.append("count", new Document("$sum", 1))
.append("date", new Document("$first", "$createdAt"))),
project("count")
.andExclude("_id")
.and(dateOf("date").toString("%Y-%m-%d")).as("date"),
match(where("date").gte("2020-06-05")));
AggregationResults<OutputClass> result = mongoTemplate.aggregate(agg,
mongoTemplate.getCollectionName(BillingDomain.class), OutputClass.class);
编辑: System.out.println(agg);
"aggregate":"__collection__",
"pipeline":[
"$group":
"_id":
"day":
"$dayOfMonth":"$createdAt"
,
"month":
"$month":"$createdAt"
,
"year":
"$year":"$createdAt"
,
"count":
"$sum":1
,
"date":
"$first":"$createdAt"
,
"$project":
"count":1,
"_id":0,
"date":
"$dateToString":
"format":"%Y-%m-%d",
"date":"$date"
,
"$match":
"date":
"$gte":"2020-06-05"
]
【讨论】:
项目方法在此方法中不可用 @ParminderSingh 你是什么意思?project("count")...
@ParminderSingh 不清楚您的项目有什么问题?不行吗?以上是关于用Spring MongoTemplate实现根据时间倒序查询的主要内容,如果未能解决你的问题,请参考以下文章
关于Spring中MongoTemplate.aggregate的一个奇异bug
SpringBoot系列之MongoTemplate加PageHelper分页实现
利用MongoTemplate 简单实现MongoDB 增删改查
利用MongoTemplate 简单实现MongoDB 增删改查