可滚动游标
默认情况下,MongoDB会在客户端耗尽游标中的所有结果时自动关闭游标。但是,对于定长集合,您可以使用在客户端耗尽初始游标中的结果后仍然保持打开状态的可 tail 游标。可 tail 游标在概念上等同于Unix命令中的tail
命令的-f
选项("跟随"模式)。在客户端将额外文档插入到定长集合后,可 tail 游标将继续检索文档。使用可 tail 游标在具有高写入量且索引不切实际的定长集合上。例如,MongoDB 复制使用可 tail 游标来跟踪主数据库的操作日志。
用例
在具有高写入量且索引不切实际的定长集合上使用可 tail 游标。例如,MongoDB 复制使用可 tail 游标来跟踪主数据库的操作日志。
注意
如果您的查询是在索引字段上,请使用常规游标而不是可 tail 游标。跟踪查询返回的索引字段的最后一个值。为了检索新添加的文档,请使用查询条件中的最后一个索引字段值再次查询集合。例如
db.<collection>.find( { indexedField: { $gt: <lastvalue> } } )
入门
要在mongosh
中创建可 tail 游标,请参阅cursor.tailable()
。
要查看您驱动程序的可 tail 游标方法,请参阅您的驱动程序文档。
行为
考虑以下与可尾随游标相关的行为
可尾随游标不使用索引。它们以自然顺序返回文档。
由于可尾随游标不使用索引,查询的初始扫描可能很昂贵。在最初耗尽游标后,后续检索新添加的文档的成本较低。
如果游标当前位置的数据被新数据覆盖,则可尾随游标可能变得无效。例如,如果数据插入的速度比游标迭代的速度快,就可能发生这种情况。