mongodb - 确实使数据到期ttl设置实际上索引并删除所有文档到期时的源集合

时间:2014-04-17 17:52:11

标签: mongodb ttl

我有一个关于文档上的TTL设置到期的问题。

我的用例:

我的应用程序是一种聚合服务。它为每个源创建一个新集合。来源可能来去(读死)。我的数据访问模式是更少的读取次数和更多的写入次数。虽然某些核心集合(未更改)已编制索引,但应用程序为每个源创建的集合未编制索引。通常会获取该集合中的整个数据或部分数据子集(如10条记录),因此无需真正索引。

问题:

来自源的动态集合越来越大,经过一段时间后,我们不需要这些集合中的旧文档。所以我在考虑应用“expire TTL settings”。但是,我几乎没有问题。

问题:

  1. 它是否真正创建了有助于搜索的索引。我的意思是我不希望将这些文件编入索引。目前,我只是从集合中获取所有内容。这是我们的用例。
  2. 当该集合中的所有文档都已过期时,它是否也会删除该集合。这可能是内部细节,但我认为对此有所了解会有所帮助

1 个答案:

答案 0 :(得分:3)

文档的过期TTL设置通过设置了expireAfterSeconds标志的BSON日期对象上的索引实现并强制执行。所以你必须在该字段上有一个索引才能使TTL工作。不确定为什么你有关于索引文档的问题,但这是TTL工作的唯一方法。

关于索引是否有助于搜索 - 是的。您可以使用expireAfterSeconds在日期对象上创建索引,然后对该字段运行查询并使用explain()进行测试 - 您将看到它确实使用索引进行搜索。

关于删除集合,不执行此操作 - 它只删除过期的文档。