Skip to content

Sort without grouped fields #3917

Closed
Closed
@1053531172

Description

@1053531172
    db.rep_report_param_label.aggregate([{
        "$match": {}
    }, {
        "$group": {
            "_id": {
                "_id:null": "$_id:null",
                "label_name": "$label_name"
            }
        }
    }, {
        "$project": {
            "label_name": "$_id.label_name",
            "_id": 0
        }
    }, {
        "$sort": {
            "serial_number": - 1,
            "label_name": - 1
        }
    }, {
        "$skip": 290
    }, {
        "$limit": 10
    }]) 

this is ok in mongodb.
but i use in spring data mongodb v3.0.0 like this,

    GroupOperation groupOperation = Aggregation.group("_id:null", "label_name");
    aggregationOperations.add(groupOperation);
    countAggregationOperations.add(groupOperation);

    ProjectionOperation projectionOperation = Aggregation.project("label_name").andExclude("_id");
    aggregationOperations.add(projectionOperation);
    countAggregationOperations.add(projectionOperation);

    Sort sort = Sort.by(Sort.Direction.DESC, "serial_number");
    SortOperation sortOperation = new SortOperation(sort).and(Sort.Direction.DESC, "label_name");
    aggregationOperations.add(sortOperation);

it was wrong

    java.lang.IllegalArgumentException: Invalid reference 'serial_number'!
        at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:114) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:86) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.InheritingExposedFieldsAggregationOperationContext.resolveExposedField(InheritingExposedFieldsAggregationOperationContext.java:62) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:109) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:86) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.SortOperation.toDocument(SortOperation.java:73) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.AggregationOperation.toPipelineStages(AggregationOperation.java:55) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.AggregationOperationRenderer.toDocument(AggregationOperationRenderer.java:56) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.aggregation.Aggregation.toPipeline(Aggregation.java:721) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.AggregationUtil.createPipeline(AggregationUtil.java:95) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.MongoTemplate.doAggregate(MongoTemplate.java:2118) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.MongoTemplate.aggregate(MongoTemplate.java:2093) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.data.mongodb.core.MongoTemplate.aggregate(MongoTemplate.java:1992) ~[spring-data-mongodb-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at 

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions