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> } )
命令字段
命令接受以下字段
字段 | 类型 | 描述 |
---|---|---|
getMore | 长整型 | 光标标识符。 |
集合 | 字符串 | 光标操作所在集合的名称。 |
batchSize | 正整数 | 可选。每次批量返回的文档数量。 如果未设置 |
maxTimeMS | 非负整数 | 可选。 指定服务器等待新文档匹配可尾部游标查询在固定集合上的最大时间。对
MongoDB使用与
|
注释 | 任何 | 可选。用户提供的附加到此命令的注释。一旦设置,此注释将出现在以下位置的相关命令记录旁边
注释可以是任何有效的 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") } } }
字段 | 描述 |
---|---|
cursor | 包含游标信息,包括游标 ID 以及文档的 如果由于查询的分片不可用, 可以使用 |
"ok" | 指示命令是否成功( 1 )或失败(0 )。 |
除了这些字段之外,db.runCommand()
响应还包括副本集和分片集群的以下信息
$clusterTime
operationTime
请参阅db.runCommand()响应以获取详细信息。
行为
访问控制
如果启用了身份验证,您只能对您创建的光标运行getMore
。
会话
对于在会话内部创建的光标,您不能在会话外部调用getMore
。
同样,对于在会话外部创建的光标,您不能在会话内部调用getMore
。
交易
对于多文档事务:
慢查询
从MongoDB 5.1开始,当getMore
命令记录为慢查询时,查询哈希和计划缓存键字段将添加到慢查询日志消息和分析器日志消息中。
从MongoDB 8.0开始,现有的queryHash
字段重命名为planCacheShapeHash
。如果您使用的是早期版本的MongoDB,您将看到queryHash
而不是planCacheShapeHash
。