mongodb sort超过最大限制怎么用

问题描述

当我对一个没有建索引的字段做find,然后做sort的时候,可能触发sort的size的32MB限制,例如:

db.getCollection('Hotel').find({"time_stamp":{"$lte":1485878400}}).sort({"time_stamp": -1})

错误如下:

Error: error: {
"$err" : "Executor error: Overflow sort stage buffered data usage of 33558548 bytes exceeds internal 
limit of 33554432 bytes",
"code" : 17144
}

两种解决方法

解决方法一:对需要排序的字段建索引

db.stotal.ensureIndex({'type': -1})

解决方法二:修改默认配置,把sort时可以用的内存设置大点:

db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})

这两种解决方法各有利弊:

方法一:增加了索引会导致数据写入变慢,存储占用变多;

方法二:不建索引修改默认配置,会导致sort的时候占用更多的内存。

云海天教程网,大量的免费MongoDB入门教程,欢迎在线学习!

来源:PY学习网:原文地址:https://www.py.cn/article.html

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » mongodb sort超过最大限制怎么用