小编Ped*_*que的帖子

Spring 中 MongoDb 的“排序超出内存限制”问题

我正在编写一个方法来使用 MongoRepository 实现查询,我在 Java/Spring 项目中使用聚合,但在测试时它超出了内存限制。

我尝试过使用

newAggregationOptions().cursorBatchSize(pageable.getPageSize()).allowDiskUse(true).build()
Run Code Online (Sandbox Code Playgroud)

但没有用

我的方法:

...
        var matchCriteria = match(criteria);

        var unwindVariations = unwind("variations", false);


        var sort = sort(Sort.Direction.ASC, "variations.plataformStatus.status");

        var countResult = count().as("totalElements");
        var aggregationOptions = Aggregation.newAggregationOptions().cursorBatchSize(pageable.getPageSize()).allowDiskUse(true).build();

        var countAggregation = newAggregation(
                matchCriteria,
                unwindVariations,
                sort,
                countResult)
                .withOptions(aggregationOptions);

        var totalElements = mongoTemplate.aggregate(countAggregation, "PRODUCT", Map.class).getMappedResults();


Run Code Online (Sandbox Code Playgroud)

错误信息:

com.mongodb.MongoCommandException: Command failed with error 16819 (Location16819): 'Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.' on server cluster0-shard-00-01-du380.mongodb.net:27017.
Run Code Online (Sandbox Code Playgroud)

java database criteria mongodb spring-boot

6
推荐指数
1
解决办法
5512
查看次数

标签 统计

criteria ×1

database ×1

java ×1

mongodb ×1

spring-boot ×1