在mongo Shell中迭代游标
最后更新于
最后更新于
在本页面
方法返回一个游标。 要访问文档,您需要迭代游标。 但是,在mongo shell中,如果未使用var关键字将返回的游标分配给变量,则该游标将自动迭代多达20次,以打印结果中的前20个文档。
以下示例描述了手动迭代游标以访问文档或使用迭代器索引的方法。
在 shell中,当使用var关键字将 方法返回的游标分配给变量时,游标不会自动进行迭代。
您可以在shell程序中调用cursor变量以进行多达20次迭代并打印匹配的文档,如以下示例所示:
您还可以使用游标方法来访问文档,如以下示例所示:
作为一种替代的打印操作,请考虑使用printjson()
辅助方法替换print(tojson())
:
考虑以下示例:
**myCursor [1]**等效于以下示例:
有关设置noCursorTimeout选项的信息,请参见驱动程序文档。
当游标返回文档时,其他操作可能会与查询交错。
对于包含不带索引的排序操作的查询,服务器必须在返回任何结果之前将所有文档加载到内存中以执行排序。
自上次服务器重新启动以来超时的游标数
“固定”打开游标的数量
打开的游标总数
结果是以下文档:
另可参考:
译者:杨帅
校对:杨帅
您可以使用游标方法来迭代游标并访问文档,如下例所示:
有关游标方法的更多信息,请参阅和 程序文档。
在 shell中,可以使用 方法来迭代游标并以数组形式返回文档,如下所示:
方法将游标返回的所有文档加载到RAM中; 方法耗尽游标。
另外,某些程序通过使用游标上的索引(即cursor [index])来提供对文档的访问。 这是先调用 方法,然后在结果数组上使用索引的快捷方式。
默认情况下,服务器将在闲置10分钟后或客户端用尽光标后自动关闭游标。 要在mongo shell中覆盖此行为,可以使用方法:
设置noCursorTimeout选项后,您必须使用手动关闭游标,或者用尽游标的结果。
MongoDB服务器批量返回查询结果。批处理中的数据量不会超过。若要覆盖批处理的默认大小,请参见 和 .
3.4版中的新增功能:, , , 和 类型的操作每批返回最多16 MB。 可以强制使用较小的限制,但不能强制使用较大的限制。
默认情况下,find()
和aggregate()
操作的初始批处理大小为101个文档。随后针对结果游标发出的操作没有默认的批处理大小,因此它们仅受16 MB消息大小的限制。
当您遍历游标并到达返回批处理的末尾时,如果还有更多结果, 将执行getMore操作以检索下一个批处理。要查看在迭代游标时批处理中剩余多少文档,可以使用方法,如以下示例所示:
方法返回包含度量标准字段的文档。 指标字段包含一个带有以下信息的 字段:
设置了选项的打开游标的数量,以防止一段时间不活动后发生超时
考虑以下示例,该示例调用 方法并从结果中访问索引字段,然后从指标字段访问游标字段: