将mongoDB查询转换为Spring数据MongoDBjava代码
Convert mongoDB query into Spring Data MongoDB java code
我有以下 MongoDB 查询,但我不知道如何在 Spring 数据 java 代码、group
和 replaceRoot
操作中进行转换。
db.getCollection('operationData').aggregate([
{ $match: type: "OPERATION_CHEAP", amount: {$gte: 1000},
createdAt: {$gte: ISODate("2020-01-24T23:00:00.000Z")}
},
{ $project: { amount: 1, operationId: 1 } },
{ $sort: { amount: -1 } },
{ $group: { _id: '$operationId', g: { $first: {data: '$$ROOT'} }} }, <----
{ $replaceRoot: { newRoot: '$g.data' }}, <------
{ $sort: { amount: 1 } }
])
这是匹配操作的代码:
Criteria criterias = new Criteria()
.andOperator(Criteria.where(Operation.AMOUNT)
.gte(minAmount)
.and(Operation.TYPE).is(OperationTypeEnum.CHEAP_OPERATION)
.and("createdAt").gte(startDate).lte(endDate));
MatchOperation matchOperation = Aggregation.match(criterias);
这是项目运行的代码:
ProjectionOperation projectionOperation = Aggregation.project("amount", "operationId");
这是聚合操作:
Aggregation aggregation = Aggregation.newAggregation(matchOperation, projectionOperation,
sort(direction, "amount"));
AggregationResults<OperationDataVO> aggregate = mongoTemplate.aggregate(aggregation,
COLLECTION, OperationDataVO.class);
我不知道如何创建和集成 GroupOperation
试试这个方法:
Aggregation.group("operationId").first("$$ROOT").as("g");
Aggregation.replaceRoot("g");
我有以下 MongoDB 查询,但我不知道如何在 Spring 数据 java 代码、group
和 replaceRoot
操作中进行转换。
db.getCollection('operationData').aggregate([
{ $match: type: "OPERATION_CHEAP", amount: {$gte: 1000},
createdAt: {$gte: ISODate("2020-01-24T23:00:00.000Z")}
},
{ $project: { amount: 1, operationId: 1 } },
{ $sort: { amount: -1 } },
{ $group: { _id: '$operationId', g: { $first: {data: '$$ROOT'} }} }, <----
{ $replaceRoot: { newRoot: '$g.data' }}, <------
{ $sort: { amount: 1 } }
])
这是匹配操作的代码:
Criteria criterias = new Criteria()
.andOperator(Criteria.where(Operation.AMOUNT)
.gte(minAmount)
.and(Operation.TYPE).is(OperationTypeEnum.CHEAP_OPERATION)
.and("createdAt").gte(startDate).lte(endDate));
MatchOperation matchOperation = Aggregation.match(criterias);
这是项目运行的代码:
ProjectionOperation projectionOperation = Aggregation.project("amount", "operationId");
这是聚合操作:
Aggregation aggregation = Aggregation.newAggregation(matchOperation, projectionOperation,
sort(direction, "amount"));
AggregationResults<OperationDataVO> aggregate = mongoTemplate.aggregate(aggregation,
COLLECTION, OperationDataVO.class);
我不知道如何创建和集成 GroupOperation
试试这个方法:
Aggregation.group("operationId").first("$$ROOT").as("g");
Aggregation.replaceRoot("g");