À l'aide de MongoDB, faire expirer les documents après un nombre spécifié de secondes en Go
À l'aide des index TTL, MongoDB vous permet d'expirer automatiquement les documents après un délai spécifié durée. Cet article montre comment y parvenir dans Go en utilisant le pilote mongo-go-driver officiel.
Suite à la documentation MongoDB, le code montre comment :
Cependant, l'exemple fourni fonctionne correctement et le problème n'est pas lié au code.
Comprendre le comportement de l'index TTL
Le paramètre expireAfterSeconds spécifie la durée après le champ crééAt pendant laquelle le document doit être considéré comme expiré. Cependant, la suppression des documents expirés n'est pas immédiate.
Selon la documentation MongoDB :
"L'index TTL ne garantit pas que les données expirées seront supprimées immédiatement après l'expiration. Il peut y avoir un délai entre le moment où un document expire et le moment où MongoDB supprime le document de la base de données. "
Tâche en arrière-plan pour la suppression
MongoDB a une tâche en arrière-plan qui supprime les documents expirés toutes les 60 secondes. Par conséquent, les documents peuvent rester dans la collection jusqu'à 60 secondes après leur expiration. De plus, si la base de données est fortement sollicitée, la suppression de tous les documents expirés peut prendre un certain temps.
Résolution
Dans votre extrait de code, vous vous attendez à ce que certains les documents doivent être supprimés après 5 secondes (en fonction de l'option expireAfterSeconds) mais n'attendent que quelques secondes après l'insertion pour vérification. Pour tester correctement la fonctionnalité, vous devez prévoir suffisamment de temps (plusieurs minutes au minimum) pour que la tâche en arrière-plan s'exécute et supprime les documents expirés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!