Использование документов MongoDB со сроком действия после указанного количества секунд в Go
Используя индексы TTL, MongoDB позволяет автоматически истечь срок действия документов после указанного продолжительность. В этой статье показано, как добиться этого в Go с помощью официального драйвера mongo-go-driver.
В соответствии с документацией MongoDB код показывает, как:
Однако предоставленный пример работает правильно, и проблема не связана с кодом.
Понимание поведения индекса TTL
Параметр expireAfterSeconds указывает продолжительность после поля createAt, в течение которой документ следует считать истекшим. Однако удаление документов с истекшим сроком действия не происходит немедленно.
Согласно документации MongoDB:
"Индекс TTL не гарантирует, что данные с истекшим сроком действия будут удалены сразу после истечения срока действия. Возможна задержка между временем истечения срока действия документа и временем, когда MongoDB удаляет документ из базы данных."
Фоновая задача для удаления
MongoDB имеет фоновую задачу, которая удаляет документы с истекшим сроком действия каждые 60 секунд. Таким образом, документы могут оставаться в коллекции до 60 секунд после истечения срока их действия. Кроме того, если база данных испытывает большую нагрузку, удаление всех документов с истекшим сроком действия может занять дополнительное время.
Решение
В фрагменте кода вы ожидаете, что некоторые документы должны быть удалены через 5 секунд (на основе опции expireAfterSeconds), но ждут только несколько секунд после вставки для проверки. Чтобы правильно протестировать функциональность, вы должны предоставить достаточно времени (минимум несколько минут) для запуска фоновой задачи и удаления документов с истекшим сроком действия.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3