MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs 菜单
Docs 主页
/ /

Cursors

游标指向查询结果。游标允许一次批处理遍历数据库结果。

find()aggregate() 方法返回包含批处理结果的游标。手动迭代游标或使用toArray() 访问权限文档。有关详细信息,请参阅在 mongosh中迭代游标。

对于固定大小集合,请使用可追加游标在插入文档时对其检索。有关详细信息,请参阅可追加游标。

在以下情况下, MongoDB会关闭在客户端会话中创建的游标:

  • 客户端耗尽游标。

  • 您可以手动关闭游标。

  • 您手动终止会话。

  • 会话超时。

cursorTimeoutMillis设置空闲游标的超时时间(默认:10 分钟)。在此时间之后, MongoDB会关闭会话外的空闲游标。返回批处理可延长超时时间。使用killCursors 手动关闭游标。

localLogicalSessionTimeoutMinutes设置会话超时(默认:30 分钟)。使用refreshSessions 延长会话,使用killSessions 结束会话。

驱动程序和mongosh 会为在显式会话之外打开的游标创建隐式会话。

当游标返回文档时,其他操作可能会在背景运行并影响结果,具体取决于读关注(read concern)级别。 有关详细信息,请参阅读取隔离性、一致性和新近度。

从 MongoDB 7.2 开始,尝试在mongos部署上使用不存在的数据库的聚合管道查询会返回验证错误。

在以前的版本中,这些聚合查询返回空游标。

find执行aggregate 和 操作,直到填满一个批处理。然后查询暂停。此暂停的查询是一个游标,由游标ID标识。

数据库会返回批处理和游标ID。驱动程序和mongosh 会将其存储在客户端游标中。如果存在更多文档,游标将通过getMore 检索下批处理。使用cursor.objsLeftInBatch() 检查剩余的批处理结果,然后使用cursor.hasNext() 检查更多结果。

游标分批返回结果,但受到16 MiB 最大BSON文档大小的限制。使用 cursor.batchSize()find()aggregate()101设立文档限制。 和getMore 默认批处理大小为 。后续的 操作没有默认限制,只有16 MiB 消息大小。

使用不带索引的排序操作的查询必须将所有文档加载到内存中,然后才能返回结果。

db.serverStatus()metrics.cursor 字段中返回游标指标。请参阅metrics.cursor

后退

查询结构

在此页面上