使用jongo查询MongoDB时,是否可以添加allowDiscUse: true
?
我发现了这样的错误-`Sort超出了104857600字节的内存限制,但没有选择使用外部排序。中止操作。可以通过允许allowDiskUse:true来选择加入,以免您的聚合看起来像
aggregate([{$sort:...},{$$skip:...}...],{allowDiscUse: true})
但据我所知,Jongo中的
Aggregate
类仅将管道应用于自身,然后可以使用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 Aggregate测试类以查看工作示例https://github.com/bguerout/jongo/blob/20ed6e79c0801ae1af2dc3d4fee240e201ad93dd/src/test/java/org/jongo/AggregateTest.java#L120
关于java - 使用Jongo时使用allowDisc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36642619/