我有一个关于文档上的TTL设置到期的问题。
我的用例:
我的应用程序是一种聚合服务。它为每个源创建一个新集合。来源可能来去(读死)。我的数据访问模式是更少的读取次数和更多的写入次数。虽然某些核心集合(未更改)已编制索引,但应用程序为每个源创建的集合未编制索引。通常会获取该集合中的整个数据或部分数据子集(如10条记录),因此无需真正索引。
问题:
来自源的动态集合越来越大,经过一段时间后,我们不需要这些集合中的旧文档。所以我在考虑应用“expire TTL settings”。但是,我几乎没有问题。
问题:
答案 0 :(得分:3)
文档的过期TTL设置通过设置了expireAfterSeconds标志的BSON日期对象上的索引实现并强制执行。所以你必须在该字段上有一个索引才能使TTL工作。不确定为什么你有关于索引文档的问题,但这是TTL工作的唯一方法。
关于索引是否有助于搜索 - 是的。您可以使用expireAfterSeconds在日期对象上创建索引,然后对该字段运行查询并使用explain()进行测试 - 您将看到它确实使用索引进行搜索。
关于删除集合,不执行此操作 - 它只删除过期的文档。