我想知道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