mongodb-gridfs下载文件报Sort exceeded memory limit of 104857600 bytes异常

报错详细信息

com.mongodb.MongoQueryException: Query failed with error code 292 and error message 'Executor error during find command :: caused by :: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting.' on server 11.51.141.63:27017at com.mongodb.internal.operation.FindOperation.lambda$execute$1(FindOperation.java:670)at com.mongodb.internal.operation.OperationHelper.lambda$withSourceAndConnection$2(OperationHelper.java:564)at com.mongodb.internal.operation.OperationHelper.withSuppliedResource(OperationHelper.java:589)at com.mongodb.internal.operation.OperationHelper.lambda$withSourceAndConnection$3(OperationHelper.java:563)at com.mongodb.internal.operation.OperationHelper.withSuppliedResource(OperationHelper.java:589)at com.mongodb.internal.operation.OperationHelper.withSourceAndConnection(OperationHelper.java:562)at com.mongodb.internal.operation.FindOperation.lambda$execute$2(FindOperation.java:661)at com.mongodb.internal.async.function.RetryingSyncSupplier.get(RetryingSyncSupplier.java:65)at com.mongodb.internal.operation.FindOperation.execute(FindOperation.java:692)at com.mongodb.internal.operation.FindOperation.execute(FindOperation.java:86)at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:191)at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:135)at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:92)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.getCursor(GridFSDownloadStreamImpl.java:240)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.getChunk(GridFSDownloadStreamImpl.java:215)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.getBuffer(GridFSDownloadStreamImpl.java:277)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.read(GridFSDownloadStreamImpl.java:101)

解决方式(给fs.chunks集合的files_id字段加索引)如

db.fs.chunks.find();db.fs.chunks.getIndexes();
# 加索引
db.fs.chunks.createIndex({files_id: 1, n: 1}, {unique: true});

加上索引后问题得以解决!


针对网上说的

1、直接修改系统限制内存大小的变量,如

use admin
db.auth("adminuser","passwd")
db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})

执行这个命令需要admin用户认证成功,当时没有创建admin用户,也不好停掉MongoDB服务去创建admin用户,所以当时没有使用过此方式。当然不是所有的版本都有此变量,可以通过如下命令查询所有可修改的变量

db.adminCommand({getParameter: '*'})

如果查到了就可以通过以上命令修改变量值,当然如MongoDB版本是5.0以上的,也可以直接修改配置文件如

setParameter:internalQueryExecMaxBlockingSortBytes: 335544320

2、开启使用磁盘(allowDiskUse)如

db.getCollection('fs.chunks').aggregate([
{$group:{_id:"$title",count:{$sum:1},title:{$addToSet:"$title"},ids:{$addToSet:"$_id"}}},{$match:{count:{$gt:1}}}],
{allowDiskUse:true})

也可以从代码层面开启使用磁盘,具体可自行搜索一下。

具体的配置含义也没有说清楚,当时试了很多次还是不行。估计是某个配置项没有配好,或者是不适用GridFs下载问题!

3、找到具体报错的集合,然后添加合适的索引。

如上面解决方式,问题得以解决。

希望能帮助到您!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件开发技术包括哪些呢?

软件开发技术包括多种编程语言、开发框架、工具和方法,以满足不同类型的应用和项目需求。以下是一些常见的软件开发技术: 1、编程语言:各种编程语言用于开发不同类型的软件,如Java、Python、C、C#、JavaScript、Ruby、PHP、Swift…

Java操作Excel

一、Java操作Excel 二、Excel根据单元格状态自动变更行背景颜色 用excel记录和跟进工作的时候,设置背景颜色,以此让记录更加突出,方便查看,但是手动修改背景颜色一来麻烦容易漏,也可能颜色不统一,我们可以试…

PHP 数据库交互优化,根据传参查询

接上文 修改以下内容 将查询的 uid 改为 username,同时在 user 和 message 两张表中查询 $sql "select m.id,u.username,m.title,m.content from user u,message m where u.idm.uid;"根据 message 中的 id 查询,形式为 http://127.0.0.1/m…

数学与经济管理

数学与经济管理(2-4分) 章节概述 最小生成树问题 答案:23 讲解地址:74-最小生成树问题_哔哩哔哩_bilibili 最短路径问题 答案:81 讲解地址:75-最短路径问题_哔哩哔哩_bilibili 网络与最大流量问题 真题 讲解…

【STL】:vector用法详解

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关vector的基础用法,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

k8s-----24、亲和力Affinity

1、应用场景 pod和节点间的关系: 某些Pod优先选择有ssdtrue标签的节点,如果没有在考虑部署到其它节点;某些Pod需要部署在ssdtrue和typephysical的节点上,但是优先部署在ssdtrue的节点上; pod和pod间的关系: 同一个应用的Pod不…

Wt库的C++下载器程序

以下是一个使用Wt库的C下载器程序&#xff0c;用于下载音频文件。此程序使用了的代码。 #include <Wt/Wt.h> #include <Wt/Http/DiskCache.h> #include <Wt/Http/HttpClient.h> ​ // 定义一个函数来获取服务器 static std::string get_proxy() {// 使用Wt:…

idea免费插件分享

分享一些在开发中常用到的idea插件&#xff0c;都是一些我自己常用的&#xff0c;希望对各位程序员有帮助吧。 1、Chinese Language 汉化插件&#xff1a;中文语言包将为您的 IntelliJ IDEA, AppCode, CLion, DataGrip, GoLand, PyCharm, PhpStorm, RubyMine, WebStorm, 和Rid…

SQL基础练习题1

文章目录 主要内容一.SQL基础练习题1.下面的 SELECT 语句是否执行成功&#xff1a;代码如下&#xff08;示例&#xff09;: 2.在下面的语句中有 4 个编码错误&#xff0c;请找出它们&#xff1a;代码如下&#xff08;示例&#xff09;: 3.显示 DEPARTMENTS 表的结构。代码如下&…

js创建 ajax 过程

目录 前言&#xff1a;AJAX 技术的重要性 详解&#xff1a;创建 AJAX 请求的步骤 1. 创建 XMLHttpRequest 对象 2. 配置请求 3. 处理响应 4. 发送请求 5. 处理异步请求 解析&#xff1a;AJAX 请求的重要性和限制 总结&#xff1a; 前言&#xff1a;AJAX 技术的重要性 …

漏洞复现--用友 畅捷通T+ .net反序列化RCE

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

javaEE -8(9000字详解网络编程)

一&#xff1a;网络编程基础 1.1 网络资源 所谓的网络资源&#xff0c;其实就是在网络中可以获取的各种数据资源&#xff0c;而所有的网络资源&#xff0c;都是通过网络编程来进行数据传输的。 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff…

【jvm】虚拟机栈之操作数栈

目录 一、说明二、图解2.1 代码示例2.2 javap操作 三、图示3.1 bipush 153.2 istore_13.3 bipush 83.4 istore_23.5 iload_13.6 iload_23.7 iadd3.8 istore_33.9 return结束 四、附加 一、说明 1.Operand Stack 2.栈可以使用数组或链表来实现 3.每一个独立的栈帧包含一个后进先…

arcgis js api 4.x通过TileLayer类加载arcgis server10.2发布的切片服务跨域问题的解决办法

1.错误复现 2.解决办法 2.1去https://github.com/Esri/resource-proxy 网站下载代理配置文件&#xff0c;我下载的是最新的1.1.2版本&#xff0c;这里根据后台服务器配置情况不同有三种配置文件&#xff0c;此次我用到的是DotNet和Java. 2.2 DotNet配置 2.2.1 对proxy文件增加…

SpringCloud复习:(6)feign整合hystrix

一、添加依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.2.5.RELEASE</version></dependency>二、配置文件开启feign对hystrix的支…

相交链表-力扣

一、题目描述 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 二、题解 注意题目所说的相交&#xff0c;相交节点不只是数值上的相等&#xff0c;而是相交以后两条链变成一条链。 解决改题目&#xff0c;我们可以&#xff1a;…

LeetCode75——Day16

文章目录 一、题目二、题解 一、题目 1004. Max Consecutive Ones III Given a binary array nums and an integer k, return the maximum number of consecutive 1’s in the array if you can flip at most k 0’s. Example 1: Input: nums [1,1,1,0,0,0,1,1,1,1,0], k …

【洛谷 P1518】[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题解(深度优先搜索)

[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题目描述 两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为&#xff08;牛和 John&#xff09;。 追击在 10 10 10 \times 10 1010 的平面网格内进行。一个格子可以是&#xff1…

面试中经常问道的问题一

ActiveMQ持久订阅设置 在JMS中,Topic实现publish和subscribe语义。一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。 JMS Queue执行load bal…

C使用const详细(学习笔记)

1、对形参使用const&#xff0c;告诉编译器&#xff0c;该函数不能修改arr指向的数组中的内容。 int sum(const int * arr,int n);2、指向const的指针不能用于改变值 3、把const数据或非const数据的地址初始化为只想const的指针或为其赋值时合法的 //带const的指针&#xff0…