使用 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
有没有办法在使用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