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

+0

嗯,看来我用一些旧版本jongo的,我切换到1.2,现在我可以设置这个,应该帮助我猜!谢谢! –

+0

BTW 1.3.0已于上周发布。 –