深入MongoDB内存溢出调优

  

<强>

例外:,getMore  runner 错误:,Overflow  sort  stage  buffered  data    usage  of  33638076, bytes  exceeds  internal  limit  of  33554432,字节

<强>

下文引用自:https://docs.mongodb.com/manual/reference/method/cursor.sort/cursor.sort

当无法获得一个索引的排序顺序,MongoDB将在内存中对结果进行排序,这要求被排序的结果集小于32字节。

排序操作时消耗超过32字节,MongoDB将返回一个错误。为了避免这种错误,要么创建一个索引支持排序操作(见排序和索引使用)或使用sort()与限制()(见限制结果)。

<强>

下文引用自:https://docs.mongodb.com/manual/tutorial/query-documents/查询方法

<强>

MongoDB提供db.collection.find()方法读取文档的集合。db.collection.find()方法返回一个指针来匹配的文档。

db.collection.find (, & lt; query  filter>,, & lt; projection>,)


的db.collection.find()方法,您可以指定以下可选字段:

<李>

查询过滤器返回指定文档。李李

<>

查询投影到指定的字段返回匹配的文档。投影限制了MongoDB的数据量通过网络返回给客户端。


您可以添加一个光标限制修饰符,跳过,排序顺序。文件的顺序返回的查询没有定义,除非你指定一种()。

下文引用自:https://docs.mongodb.com/manual/reference/method/db.collection.find/combine-cursor-methods

<强>

以下语句链指针方法限制()和():

db.bios.find () .sort(,{,名字:1,},).limit (, 5)   db.bios.find () .limit (, 5) .sort(,{,名字:1,},)

这两个语句是等价的;即你的顺序链的极限()和()方法并不重要。两个语句返回的前五个文件,由按升序排列> use 管理   db.runCommand (, {, getParameter : 1,“internalQueryExecMaxBlockingSortBytes”,:, 1,},)

再来看看如何设置:

db.adminCommand ({setParameter: 1, internalQueryExecMaxBlockingSortBytes:, & lt; limit 拷贝bytes>})


深入MongoDB内存溢出调优