【问题标题】:Spring MongoDB sorting overflowSpring MongoDB 排序溢出
【发布时间】:2015-11-15 15:15:13
【问题描述】:

我的 mongoDB 中有 300 条记录,我使用以下代码进行查询:

Criteria c = ...;
Query q = new Query(c).limit(10).skip(skip);
q = q.with(new Sort(Sort.DEFAULT_DIRECTION.DESC,"fromDate"));
List<Event> results = mongoTemplate.find(q, Event.class, "Event");

当 skip = 40 时,此代码可以正常工作。

但是,当 skip = 260 时,我收到以下错误:

溢出排序阶段缓冲数据使用量 33564943 字节超过内部限制 33554432 字节;

似乎mongoDB在对大量记录进行排序时存在溢出问题。谁能建议如何处理这个问题?

【问题讨论】:

    标签: spring mongodb spring-data spring-data-mongodb


    【解决方案1】:

    Mongodb 对内存排序有 32mb 的限制:详情请点击此处:

    mongo sort limit

    您应该为排序字段编制索引,这将解决问题。

    【讨论】:

    • 感谢您的建议!我们可以使用@Indexed 设置注释多个字段吗?因为根据用户请求,我们需要按不同的字段进行排序。 (有时我们需要按日期排序......而在另一种情况下,我们需要按标题......等等)。
    • 是的,我相信这就是您要找的。 docs.mongodb.org/manual/tutorial/create-a-compound-index(除非您只需要创建多个单一索引,这完全可以做到)
    猜你喜欢
    • 2014-10-22
    • 2015-04-03
    • 2013-09-02
    • 2018-04-13
    • 1970-01-01
    • 2016-01-15
    • 2017-01-24
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多