小编rom*_*nws的帖子

MongoDB Java驱动程序3.x:如何将allowDiskUse = true传递给aggregate()方法?

我正在使用mongo-java-driver 3.0.2.

我有一个MongoCollection.aggregate(List<Bson> pipeline)用于排序和限制的方法:

private static MongoIterable<Document> selectTop(int n) {
    BasicDBObject sortFields = new BasicDBObject("score", -1);
    BasicDBObject sort = new BasicDBObject("$sort", sortFields);

    BasicDBObject limit = new BasicDBObject("$limit", n);

    List<BasicDBObject> pipeline = new ArrayList<>();
    pipeline.add(sort);
    pipeline.add(limit);

    return playersCollection.aggregate(pipeline);
}
Run Code Online (Sandbox Code Playgroud)

什么时候n很大,它失败了:

com.mongodb.MongoCommandException: Command failed with error 16820: 'exception: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.'
Run Code Online (Sandbox Code Playgroud)

我发现MongoDB shell提供了一个方法db.collection.aggregate(pipeline, options) …

java mongodb

9
推荐指数
1
解决办法
5869
查看次数

标签 统计

java ×1

mongodb ×1