根據messageStatus字段分組統計不同狀態的數據量,相當於mysql裏的group by 關鍵字。
使用mongo裏的aggregation聚合關鍵字。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author DAI
* @date 2020/5/30 19:08
* @Description TODO
*/
@Service
public class MessageReceiveLogDaoImpl implements MessageReceiveLogDao {
@Autowired
MongoTemplate mongoTemplate;
@Override
public List<MessageCount> countByMessageStatus() {
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.group("messageStatus").count().as("count"),
Aggregation.project("count").and("messageStatus").previousOperation()
);
AggregationResults<MessageCount> outputTypeCount = mongoTemplate.aggregate(aggregation, MessageReceiveLog.class, MessageCount.class);
return outputTypeCount.getMappedResults();
}
}
結果集類
import lombok.Data;
/**
* @author DAI
* @date 2020/6/1 11:56
* @Description 分組求和
*/
@Data
public class MessageCount {
String messageStatus;
Long count;
}
前端返回結果