0

allowDiscUse: true使用jongo查询MongoDB时有没有办法添加?我发现这样的错误 - `排序超过了 104857600 字节的内存限制,但没有选择外部排序。中止操作。通过 allowDiskUse:true 选择加入可以以这样的方式被阻止,你的聚合看起来像

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 切换到其他东西?

4

1 回答 1

1

您可以使用选项方法:

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

于 2016-04-17T20:19:26.137 回答