2016-04-15 30 views
0

使用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切換到其他的東西?

回答

1

您可以使用期權定價法:

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已於上週發佈。 –