Сгруппируйте весной данные Mon go, чтобы получить только несколько полей с пагинацией - PullRequest
0 голосов
/ 29 апреля 2020

Я работаю над Spring Boot 2.2.6.RELEASE и Spring Data Mongo. Перед тем как опубликовать вопрос, я просмотрел группу spring data mongodb по , но не совсем ясно по нескольким вопросам.

1) Включите все поля, кроме departments и lastUpdateDate и createDate.

2) Как применить здесь нумерацию страниц?

Sample MongoDocument
{
    "_id" : ObjectId("5ea82ba25ae8cb2d70e2dc3b"),
    "createDate" : ISODate("2014-10-10T07:07:49.000Z"),
    "updatedBy" : "John",
    "lastUpdateDate" : ISODate("2015-01-09T04:43:59.000Z"),
    "firstName" : "Laxmi",
    "lastName" : "Dekate",
    "age" : "LTU",
    .........
    ..........

    "departments" : [ 
        {
            "deptName" : "LT",
            "deptCd" : "KU",
            "status" : "A"
        }, 
        {
            "deptName" : "AL",
            "deptCd" : "PN",
            "status" : "A"
        }, 
        ....
        ....
        .... //around 50 records
    ],
    "role" : {
        "roleCd" : "1",
        "roleName" : "Africa",
        "status" : "A",
        "subRole" : [ 
            {
                "subRoleName" : "XYZ",
                .....
            },
            {
                "subRoleName" : "AAA",
                .....
            },
            // around 10 embeeded array
        ]
    },
}

Код - этот код дает мне все поля в ответе и без подробностей о нумерации страниц

SkipOperation skipOp = Aggregation.skip((long) pageRequest.getPageNumber() * pageRequest.getPageSize());
LimitOperation limitOp = Aggregation.limit(pageRequest.getPageSize());
SortOperation sortOperation = CommonUtil.getSortOperation(pageRequest);

Aggregation aggregation = Aggregation.newAggregation(
        Aggregation.group("role.roleCd").push(Aggregation.ROOT).as("employees"),
        Aggregation.facet(skipOp, limitOp).as("dataResponse"));

AggregationResults<Response> empRes = 
        mongoTemplate.aggregate(aggregation, mongoTemplate.getCollectionName(Employee.class),
                Response.class);
System.out.println(empRes);
...