TL; Единственный способ удалить документы из закрытой коллекции - это удалить всю коллекцию, которая также удалит сами индексы из коллекции.
Интересно, хранят ли укомплектованные коллекции индексы для документов с истекшим сроком действия?
Нет. Документы, которые больше не хранятся, никогда не остаются в индексе.
Извлечение документов из обычной коллекции хранит индексы.
Это немного вводит в заблуждение. Удаление всех документов из обычной коллекции с использованием db.collection.remove()
удаляет оба документа из коллекции, а также удаляет эти документы из индекса. Однако он не удаляет индексы коллекции, т. Е. После добавления новых документов, которые они добавляются в соответствующие индексы, снова (то есть удаление самого индекса отличается от удаления документов из индекса).
Обнаженные коллекции удаляют документы по таймеру и не разрешают db.collection.remove()
вообще.
ТТЛ-функцию вы связаны не имеет ничего общего с блокированными коллекциями, на самом деле, документация говорит:
Вы не можете создать индекс TTL на блокированное коллекции, потому что MongoDB не может удалить документы из закрытой коллекции.
Коллекция с индексом TTL позволяет db.collection.remove.
capped collection, с другой стороны, имеет фиксированный размер (с точки зрения объема данных), а также самые старые документы из коллекции автоматически перезаписываются, как только коллекция полна. Это не зависит от времени, а от размера коллекции. Обрезанные коллекции всегда хранятся в порядке размещения (естественный порядок).
Поскольку единственный способ удалить документы из закрытой коллекции - это удалить всю коллекцию, которая также удалит сами индексы из коллекции.
Большое спасибо за разъяснение различия между коллекциями с ограниченным доступом и TTL-ed. Итак, что происходит с индексами для документов, истекших TTL? –
Индексы в коллекции остаются. Сборник - это самостоятельная организация, так сказать.Не имеет значения, пуст ли он сейчас или нет - функциональность TTL - это сам индекс. – mnemosyn