解决MongoDB 排序超过内存限制的问题

 更新时间:2017年07月20日 15:48:38   投稿:mrr  
最近小编遇到这样的问题:对集合执行一个大排序操作(如聚合),出现以下错误:(测试版本:MongoDB 3.0.6),怎么快速解决此问题呢?下面小编给大家分享MongoDB 排序超过内存限制的解决方法,一起看看吧

对集合执行一个大排序操作(如聚合),出现以下错误:(测试版本:MongoDB 3.0.6)

> db.bigdata.aggregate(
 {$group : {_id : "$range", total : { $sum : 1 }}},
 {$sort : {total : -1}}
);
#...
 aggregate failed
 at Error (<anonymous>)
 at doassert (src/mongo/shell/assert.js:11:14)
 #...
 Error: command failed: {
 "errmsg" : "exception: Sort exceeded memory limit of 104857600 bytes, 
 but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.",
 "code" : 16819,
 "ok" : 0
 }

解决方法

参考文档: Memory Restrictions

在MongoDB中,内排序大内存限制最大为100M,如果执行一个更大的排序,需要使用 allowDiskUse 选项来将数据写到临时文件来排序。

在查询语句中添加 allowDiskUse 选项:

db.bigdata.aggregate(
[
 {$group : {_id : "$range", total : { $sum : 1 }}},
 {$sort : {total : -1}}
],
 {allowDiskUse: true}
);

总结

以上所述是小编给大家介绍的解决MongoDB 排序超过内存限制的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • ubuntu安装mongodb创建账号和库及添加坐标索引的流程分析

    ubuntu安装mongodb创建账号和库及添加坐标索引的流程分析

    这篇文章主要介绍了ubuntu安装mongodb创建账号和库及添加坐标索引的流程分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • MongoDB自动删除过期数据的方法(TTL索引)

    MongoDB自动删除过期数据的方法(TTL索引)

    这篇文章主要给大家介绍了关于MongoDB自动删除过期数据(TTL索引)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • MongoDB日志文件过大的解决方法

    MongoDB日志文件过大的解决方法

    这篇文章主要介绍了MongoDB日志文件过大的解决方法,本文给出了一种不需要重启MongoDB服务的方法重新开启一个新日志文件,需要的朋友可以参考下
    2014-10-10
  • 关于MongoDB数据库核心概念

    关于MongoDB数据库核心概念

    这篇文章主要介绍了关于MongoDB数据库核心概念,MongoDB由C++语言编写,是一个基于分布式文件存储的开源数据库系统,需要的朋友可以参考下
    2023-04-04
  • springboot整合mongodb

    springboot整合mongodb

    这篇文章主要介绍了springboot如何整合mongodb,mongodb的安装和使用,感兴趣的同学可以参考阅读本文
    2023-03-03
  • mongodb中根据时间过滤进行查询的操作方法

    mongodb中根据时间过滤进行查询的操作方法

    这篇文章主要介绍了mongodb中简单的根据时间过滤进行查询,文末补充介绍了如何根据日期过滤/查找MongoDB中的记录,结合实例给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MongoDB 使用Skip和limit分页

    MongoDB 使用Skip和limit分页

    本文章先来给大家简单介绍关于MongoDB 数据分页和排序 limit,skip用户的一些基础语句,然后用一个实例详细介绍MongoDB 数据分页和排序实例方法。
    2014-08-08
  • MongoDB时间戳转日期及日期分组实例代码

    MongoDB时间戳转日期及日期分组实例代码

    时间戳(timestamp)通常是一个字符序列,唯一地标识某一刻的时间,下面这篇文章主要给大家介绍了关于MongoDB时间戳转日期及日期分组的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 教你使用MongoDB导入导出备份数据

    教你使用MongoDB导入导出备份数据

    这篇文章主要介绍了教你使用MongoDB导入导出备份数据方法的相关资料,需要的朋友可以参考下
    2022-11-11
  • 使用centos系统中的crontab命令对mongodb定时备份恢复

    使用centos系统中的crontab命令对mongodb定时备份恢复

    编写centos脚本使用crontab命令对mongodb定时执行备份与恢复操作,并删除指定天数前的备份
    2018-03-03

最新评论