使用 Jongo 时允许使用光盘

allowDiscUse when using Jongo

有没有办法在使用jongo查询MongoDB的时候加上allowDiscUse: true? 我发现这样的错误 - `Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting.中止操作。通过 allowDiskUse:true 可以阻止选择加入,您的聚合看起来像

aggregate([{$sort:...},{$$skip:...}...],{allowDiscUse: true})

但据我所知,Jongo 中的 Aggregate class 仅将管道应用于自身,然后您可以使用 as 方法执行。

MongoCollection catalogCollection = mongoHolder.getCatalogJongo(param.id, false);

Aggregate aggregation = catalogCollection.aggregate("{$match: #}", query.build());
aggregation.and("{$skip: #}", param.offset);
aggregation.and("{$limit: #}", param.limit);
List<BasicDBObject> result = aggregation.as(BasicDBObject.class);

有没有办法将该参数传递给 mongo 而无需从 Jongo 切换到其他东西?

您可以使用选项方法:

AggregationOptions options = AggregationOptions.builder().allowDiskUse(true).build());

List<BasicDBObject> result = collection.aggregate("...").options(options).as(BasicDBObject.class);

查看 Jongo 聚合测试 class 以查看工作示例 https://github.com/bguerout/jongo/blob/20ed6e79c0801ae1af2dc3d4fee240e201ad93dd/src/test/java/org/jongo/AggregateTest.java#L120