Maison >développement back-end >Golang >Comment définir des dates par défaut dans les documents MongoDB à l'aide de Mgo de Go ?
Dans MongoDB, il est courant de définir des horodatages par défaut pour les champs de document. Cependant, dans Go avec Mgo, il n'existe aucun moyen direct de définir des valeurs par défaut pour les champs.
Une approche consiste à créer une fonction de constructeur personnalisée qui remplit la valeur par défaut :
func NewUser() *User { return &User{ CreatedAt: time.Now(), } }
Cela garantit que chaque nouvelle structure utilisateur créée à l'aide de ce constructeur aura un champ CreatedAt par défaut.
Une autre option consiste à implémenter une logique de sérialisation personnalisée à l'aide de l'interface bson.Getter de BSON :
func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil }
Lors du rassemblement de l'utilisateur vers BSON, cette fonction GetBSON sera invoquée et remplira le CreatedAt champ avec l'heure actuelle si ce n'est pas déjà fait set.
Notez qu'avec l'une ou l'autre approche, le champ CreatedAt sera remplacé par l'heure actuelle même lors de la mise à jour d'un document existant. Pour éviter cela, vous pouvez ajouter une vérification dans GetBSON pour définir le champ uniquement s'il s'agit de la valeur zéro.
De plus, l'approche de marshaling personnalisée nécessite que vous implémentiez bson.Getter pour tout type contenant une heure.Time champ avec une valeur par défaut.
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!