Go에서 지정된 시간(초) 후에 MongoDB 만료 문서 사용
TTL 인덱스를 사용하면 MongoDB를 사용하여 지정된 시간 이후에 문서를 자동으로 만료할 수 있습니다. 지속. 이 문서에서는 공식 mongo-go-driver를 사용하여 Go에서 이를 달성하는 방법을 보여줍니다.
MongoDB 문서에 따라 코드는 다음 방법을 보여줍니다.
그러나 제공된 예제는 올바르게 수행되고 있으며 문제는 코드와 관련이 없습니다.
TTL 인덱스 동작 이해
expiredAfterSeconds 매개변수는 문서가 만료된 것으로 간주되어야 하는 CreateAt 필드 이후의 기간을 지정합니다. 그러나 만료된 문서는 즉시 삭제되지 않습니다.
MongoDB 문서에 따르면
"TTL 인덱스는 만료된 데이터가 만료 즉시 삭제된다는 것을 보장하지 않습니다. 지연이 있을 수 있습니다. 문서가 만료되는 시간과 MongoDB가 데이터베이스에서 문서를 제거하는 시간 사이에 발생합니다."
삭제를 위한 백그라운드 작업
MongoDB에는 만료된 문서를 제거하는 백그라운드 작업이 있습니다. 60초마다. 따라서 문서는 만료된 후에도 최대 60초 동안 컬렉션에 남아 있을 수 있습니다. 또한 데이터베이스 로드가 심한 경우 만료된 모든 문서를 삭제하는 데 추가 시간이 걸릴 수 있습니다.
해결 방법
코드 조각에서 문서는 5초 후에 삭제되지만(expiredAfterSeconds 옵션 기준), 확인을 위해 삽입 후 몇 초만 기다립니다. 기능을 올바르게 테스트하려면 백그라운드 작업이 실행되고 만료된 문서를 삭제하는 데 충분한 시간(최소 몇 분)을 허용해야 합니다.
위 내용은 Go에서 TTL 인덱스를 사용하면 MongoDB 문서가 5초 후에도 만료되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!