我在努力解决这个问题。我的代码在cursor.hasNext();
MongoClient mongoClient = new MongoClient();
DB db = mongoClient.getDB("DBname");
DBCollection coll = db.getCollection("ColName");
DBObject orderBy = new BasicDBObject();
orderBy.put("'field.subfield1.subfield2'", -1);
DBCursor cursor = coll.find().sort(orderBy);
...
cursor.hasNext();
例外情况: 线程“main”中的异常com.mongodb.MongoException:运行错误:溢出排序阶段缓冲数据使用33571128字节超过内部限制33554432字节
当我在db控制台中使用类似的查询时,它可以正常工作。当我添加搜索查询时,它不会抛出异常,也不会返回任何结果。
代码有什么问题?我只需要带有排序文档的光标。
答案 0 :(得分:0)
通常,错误意味着您需要减少结果集,或使用索引等来执行排序:
MongoDB只返回没有索引的字段的排序结果 排序操作中所有文档的总大小,加上一小部分 开销,小于32兆字节。 Sorted Documents
**我注意到你在orderBy.put("'field.subfield1.subfield2'", -1);
中引用了双重引用,这可能是问题 - 没有可用的索引,并且它试图对整个集合进行排序。