我想知道capped集合是否为过期文档保留了索引?mongoDB中capped collectoins的索引
删除正常收集文件keeps indexes。
封顶集合remove documents by timer和do not allow db.collection.remove()。
我找不到docs中的任何词,对于加盖集合的索引会发生什么情况,希望得到知道的人的帮助。
我想知道capped集合是否为过期文档保留了索引?mongoDB中capped collectoins的索引
删除正常收集文件keeps indexes。
封顶集合remove documents by timer和do not allow db.collection.remove()。
我找不到docs中的任何词,对于加盖集合的索引会发生什么情况,希望得到知道的人的帮助。
TL; DR:从加盖集合中删除文档的唯一方法是删除整个集合,这也会从集合中删除索引本身。
我不知道是否封顶的集合保留过期文档的索引?
否。不再存储的文档不会保留在索引中。
从正常集合中删除文档可以保留索引。
这有点让人误解。使用db.collection.remove()
从正常集合中删除全部文档将删除集合中的两个文档,并从索引中删除这些文档。但是,它不会删除集合的索引,即一旦添加了新文档,它们将再次添加到相应的索引中(即删除索引本身与从索引中删除文档不同)。
加盖集合按定时器删除文档,根本不允许
db.collection.remove()
。
您所连结的TTL-功能无关与上限的集合,事实上,文件说:
你不能在一个封顶集合创建TTL索引,因为MongoDB的无法删除文件来自封顶收藏。
具有TTL索引的集合确实允许db.collection.remove。
另一方面,A capped collection具有固定的大小(根据数据大小),并且一旦收集完成后,集合中最早的文档将被自动覆盖。这不是建立在时间上的,而仅仅是集合的大小。加盖的收藏集始终以插入顺序(自然顺序)保存。
由于从封顶集合中删除文档的唯一方法是删除整个集合,这也将从集合中删除索引本身。
非常感谢澄清封顶和TTL收藏之间的区别。那么TTL过期的文档索引会发生什么? –
集合上的索引仍然存在。收藏品本身就是一个实体,可以这么说。不管它现在是否为空 - 毕竟,TTL功能本身就是一个索引。 – mnemosyn