getmore
定义
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { getMore: <long>, collection: <string>, batchSize: <int>, maxTimeMS: <int>, comment: <any> } )
命令字段
该命令接受以下字段:
字段 | 类型 | 说明 |
---|---|---|
| long | 游标标识符。 |
| 字符串 | 游标所操作的集合的名称。 |
| 正整数 | 可选。该批次中待返回的文档数量。 如果未设置 |
| non-negative integer | 可选。 指定服务器等待出现与固定大小集合上可追加游标查询匹配的新文档的最长时间。对于可追加
MongoDB 使用与
|
| any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
输出
此命令会返回包含游标信息的文档以及下一批处理。
例如,在分片集群上通过 find
操作创建的游标上运行 getMore
会返回与以下输出类似的文档:
{ "cursor" : { "id" : NumberLong("678960441858272731"), "ns" : "test.contacts", "nextBatch" : [ { "_id" : ObjectId("5e8e501e1a32d227f9085857"), "zipcode" : "220000" } ], "partialResultsReturned" : true, "postBatchResumeToken": "< Resume Token >" }, "ok" : 1, "operationTime" : Timestamp(1586385239, 2), "$clusterTime" : { "clusterTime" : Timestamp(1586385239, 2), "signature" : { "hash" : BinData(0,"lLjejeW6AQGReR9x1PD8xU+tP+A="), "keyId" : NumberLong("6813467763969884181") } } }
字段 | 说明 |
---|---|
| 包含游标信息,包括游标 ID 以及文档的 如果
|
| 表明命令是成功( |
除这些字段外,db.runCommand()
响应还包括副本集和分片集群的以下信息:
$clusterTime
operationTime
请参阅 db.runCommand() 响应,了解详情。
行为
访问控制
如果启用了身份验证,那么您只能对您创建的游标运行 getMore
。
会话
对于在会话内创建的游标,无法在会话外调用 getMore
。
同样,对于在会话外创建的游标,无法在会话内调用 getMore
。
事务
对于多文档事务:
慢查询
从 MongoDB 5.1 开始,当 getMore
命令记录为慢查询时,queryHash 和 planCacheKey 字段将添加到慢查询日志消息和分析器日志消息中。
从 MongoDB 8.0 开始,预先存在的 queryHash
字段被重命名为 planCacheShapeHash
。如果正在使用早期版本的 MongoDB,您将看到 queryHash
而不是 planCacheShapeHash
。