我直接写步骤:
1.引入jar包,特别注意,其中scope的含义,如果写test,表示仅junit test路径下可以引用到相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>1.5.21.RELEASE</version>
</dependency>
2.直接贴代码,如下:
package com.xyy.ec.cs.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xyy.ec.Application;
import com.xyy.ec.cs.common.field.FieldCommon;
import com.xyy.ec.cs.common.mongo.MongoDBCollectionCommon;
import com.xyy.ec.cs.common.workorder.WorkorderBaseVariableNameCommon;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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.data.mongodb.core.query.Criteria;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Slf4j
public class MongoTest {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void test1(){
Criteria criteria = Criteria.where("workorder_num").is("SH20200309000002");
criteria.and(WorkorderBaseVariableNameCommon.USER_GROUP_CODE).ne("").ne(null);
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.project(WorkorderBaseVariableNameCommon.FORM_TYPE_ID, FieldCommon.WORKORDER_CUSTOM_AREA, WorkorderBaseVariableNameCommon.CREATOR_ID, WorkorderBaseVariableNameCommon.GMT_CREATE, WorkorderBaseVariableNameCommon.USER_GROUP_CODE)
.and(WorkorderBaseVariableNameCommon.FORM_TYPE_ID).as("formTypeId")
.and(FieldCommon.WORKORDER_CUSTOM_AREA + ".option_value").as("customArea")
.and(WorkorderBaseVariableNameCommon.CREATOR_ID).as("userId")
.and(WorkorderBaseVariableNameCommon.USER_GROUP_CODE).as("userGroupCode"),
Aggregation.group("formTypeId", "customArea", "userId", "userGroupCode").count().as("currentCreatedCount")
);
AggregationResults<JSONObject> outputTypeCount1 = mongoTemplate.aggregate(aggregation, MongoDBCollectionCommon.WORKORDER_INFO, JSONObject.class);
List<JSONObject> result = outputTypeCount1.getMappedResults();
log.info("啦啦啦"+ JSON.toJSONString(result));
}
}
3.运行时点击@test 方法左侧绿色小按钮,run运行之: