allowDisc使用Jongo时使用
问题描述:
使用jongo查询MongoDB时,有没有办法添加allowDiscUse: true
? 我发现这样的错误 - “排序超过104857600字节的内存限制,但没有选择进行外部排序。正在中止操作。通allowDiskUse:真正决定参加,可以防止以这样的方式,你的总看起来像allowDisc使用Jongo时使用
aggregate([{$sort:...},{$$skip:...}...],{allowDiscUse: true})
但据我看到Aggregate
在Jongo类只适用于管道本身,然后你就可以用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骨料测试类,看看工作示例https://github.com/bguerout/jongo/blob/20ed6e79c0801ae1af2dc3d4fee240e201ad93dd/src/test/java/org/jongo/AggregateTest.java#L120
嗯,看来我用一些旧版本jongo的,我切换到1.2,现在我可以设置这个,应该帮助我猜!谢谢! –
BTW 1.3.0已于上周发布。 –