【发布时间】:2021-05-14 09:46:32
【问题描述】:
db.getCollection('gift').aggregate([
{ $match: {nick_name: { $ne: '' }} },
{ $project : {_id: 0, nick_name : 1, price: { $toLong: "$price" }, unit: { $toLong: 1000 }, use: { $toLong: 1 }} },
{ $project : {nick_name : 1, price: { $multiply: ["$price", "$unit"] }, use: 1} },
{ $group: {_id: '$nick_name', price: { $sum: '$price' }, total: { $sum: '$use' }} } ]);
这是我的代码
public List<GiftCodeAggregate> statistic() {
Criteria criteria = Criteria.where("nick_name").ne("");
MatchOperation matchOperation = Aggregation.match(criteria);
//ProjectionOperation projectStage = Aggregation.project("nickname", "price");
//ProjectionOperation projectPrice = Aggregation.project("price").and(ConvertOperators.ToLong.toLong("price")).as("price");
//ProjectionOperation projectUnit = Aggregation.project("unit").and(ConvertOperators.ToLong.toLong(1000)).as("unit"); ProjectionOperation projectUse = Aggregation.project("use").and(ConvertOperators.ToLong.toLong(1)).as("use"); //ProjectionOperation projectNickname = Aggregation.project("nick_name", "price", "use").andInclude("nick_name");
//ProjectionOperation projectTotal = Aggregation
.project( "price", "use").and("use").multiply((Number) Fields.field("price")).as("total");
//ProjectionOperation projectTest = Aggregation.project("price")
.and(ConvertOperators.ToLong.toLong("price")).as("price");
//GroupOperation groupOperation = Aggregation
.group("nickname")
.sum("price").as("price")
.sum("total").as("use");
//List<AggregationOperation> aggregationOperationList = Arrays.asList(matchOperation, projectStage, projectPrice, projectUnit, projectUse, projectNickname, projectTotal);
List<AggregationOperation> aggregationOperationList = Arrays.asList(matchOperation, projectTest);
TypedAggregation<GiftCodeEntity> aggregation = Aggregation.newAggregation(GiftCodeEntity.class, aggregationOperationList);
AggregationResults<GiftCodeAggregate> result = this.mongoTemplate.aggregate(aggregation, GiftCodeAggregate.class);
return result.getMappedResults();
}
我在将字段价格从字符串转换为计算时遇到问题/错误,看起来我的代码有问题?
【问题讨论】:
-
记录样本:{ "_id" : ObjectId("543253"), "ticket" : "9JDD567", "price" : "10", "quantity" : 5, "count_use" : 1 ,“昵称”:“昵称”,“create_time”:“2020-11-08 20:29:54”}
标签: spring-boot spring-data-mongodb mongotemplate