我想知道上限集合是否保留过期文档的索引?
从正常集合中删除文档会保留索引。
上限集合通过计时器删除文档,并且 根本不允许 db.collection.remove() 。
我在文档中找不到任何关于上限集合的索引会发生什么的文字,并且希望得到知道的人的帮助。
TL;DR:从上限集合中删除文档的唯一方法是删除整个集合,这也会从集合中删除索引本身。
我想知道上限集合是否保留过期文档的索引?
不会。不再存储的文档永远不会保留在索引中。
从正常集合中删除文档会保留索引。
这有点误导。通过使用从普通集合中删除所有db.collection.remove()文档不仅会从集合中删除文档,还会从索引中删除这些文档。但是,它不会删除集合的索引,即一旦添加新文档,它们就会再次添加到相应的索引中(即删除索引本身与从索引中删除文档不同)。
db.collection.remove()上限集合通过计时器删除文档,并且根本不允许。
您链接的 TTL 功能与上限集合无关,事实上,文档说:
您无法在上限集合上创建 TTL 索引,因为 MongoDB 无法从上限集合中删除文档。
具有 TTL 索引的集合确实允许 db.collection.remove。
另一方面,上限集合具有固定大小(就数据大小而言),并且一旦集合已满,集合中最旧的文档就会自动覆盖。这不是基于时间,而是纯粹基于集合的大小。上限集合始终保持插入顺序(自然顺序)。
由于从上限集合中删除文档的唯一方法是删除整个集合,因此这也会从集合中删除索引本身。
| 归档时间: |
|
| 查看次数: |
1710 次 |
| 最近记录: |