簡體   English   中英

對MongoDB子字段進行排序會在Java上引發異常

[英]Sorting MongoDB subfield throws exception on Java

我為這個問題而苦惱。 我的代碼在cursor.hasNext();上引發了異常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字節的內部限制

當我在數據庫控制台中使用類似的查詢時,它可以正常工作。 當我添加搜索查詢時,它不會引發異常,也不會返回任何結果。

代碼有什么問題? 我只需要帶有排序文檔的光標。

通常,該錯誤表示您需要減少結果集或使用索引等來執行排序:

如果排序操作中所有文檔的總大小加一小部分開銷小於32 MB,則MongoDB僅在沒有索引的字段上返回排序結果。 分類文件

**我注意到您在以下類型中雙引號: orderBy.put("'field.subfield1.subfield2'", -1); 因此可能是問題所在-沒有可用的索引,並且它試圖對整個集合進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM