我正在編寫一種使用 MongoRepository 實(shí)現(xiàn)查詢的方法,我在 Java/Spring 項目中使用聚合,但在我測試時它超出了內(nèi)存限制。我試過使用newAggregationOptions().cursorBatchSize(pageable.getPageSize()).allowDiskUse(true).build()但沒用我的方法:... 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();錯誤信息: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.
1 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗 獲得超7個贊
您應(yīng)該啟用allowDiskUse選項。
默認(rèn)情況下,排序操作有 100MB 的限制(在內(nèi)存中),在您的操作中啟用該選項將允許使用更大的大小。
$sort 階段的 RAM 限制為 100 兆字節(jié)。默認(rèn)情況下,如果階段超過此限制,$sort 將產(chǎn)生錯誤。要允許處理大型數(shù)據(jù)集,請將 allowDiskUse 選項設(shè)置為 true 以啟用 $sort 操作以寫入臨時文件。
添加回答
舉報
0/150
提交
取消