Docs 菜单

Docs 主页开发应用程序MongoDB Manual

cursor.allowDiskUse()

在此页面上

  • 定义
  • 行为
  • 例子
cursor.allowDiskUse()

重要

mongosh 方法

这是一个 mongosh方法。这不是Node.js或其他特定于编程语言的驱动程序方法的文档。

在大多数情况下, mongosh方法的工作方式与旧版mongo shell 方法相同。但是,某些旧方法在mongosh中不可用。

有关旧版mongo shell 文档,请参阅相应 MongoDB Server 版本的文档:

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

allowDiskUse()允许 MongoDB 在处理阻塞排序操作时使用磁盘上的临时文件来存储超过100 MB 系统内存限制的数据。如果 MongoDB 需要使用超过100 MB 的系统内存来执行阻塞排序操作,则 MongoDB 将返回错误,除非查询指定cursor.allowDiskUse()

allowDiskUse() 采用以下形式:

db.collection.find(<match>).sort(<sort>).allowDiskUse()

请参阅排序和索引使用,详细了解阻塞排序操作。

cursor.allowDiskUse()对使用索引应答的排序操作需要少于100 MB 内存的非索引(“阻塞”)排序操作没有影响。有关阻塞排序和排序索引使用的更完整文档,请参阅排序和索引使用。

要检查 MongoDB 是否必须执行阻塞排序,请在查询中添加 cursor.explain() 并检查解释结果。如果查询计划包含 SORT 阶段,则 MongoDB 必须执行受 100 MB 内存限制的阻塞排序操作。

考虑一个集合 sensors,仅其默认索引位于 _id。该集合包含类似于以下内容的文档:

{
"sensor-name" : "TEMP-21425",
"sensor-location" : "Unit 12",
"reading" : {
"timestamp" : Timestamp(1580247215, 1),
"value" : 212,
"unit" : "Fahrenheit"
}
}

以下操作包括字段reading.timestamp cursor.sort()该操作还包括cursor.allowDiskUse()以支持排序操作。

db.sensors.find({"sensor-location" : "Unit 12"}).
sort({"reading.timestamp" : 1}).
allowDiskUse()

由于索引中不包含reading.timestamp ,MongoDB 必须执行阻塞排序操作,才能按请求的排序顺序返回结果。通过指定allowDiskUse()即使排序操作需要超过100 MB 的系统内存,MongoDB 也可以处理该操作。如果省略allowDiskUse()该操作需要超过100 MB 的系统内存,则 MongoDB 将返回错误。

← cursor.addOption()

在此页面上