Dans MongoDB, il est possible de définir des valeurs par défaut pour les champs de document. Cela peut être utile pour remplir automatiquement des champs avec des valeurs spécifiques lors de la création d'un document, comme un champ d'horodatage.
Dans Mgo, le pilote Go pour MongoDB, il n'existe aucun moyen direct de définir valeurs par défaut pour les champs comme dans le modèle JavaScript Mongoose. Les développeurs recherchent une solution pour insérer automatiquement une valeur de date ou d'heure dans le champ d'un document lors de sa création.
Il existe deux approches principales pour définir des valeurs de date par défaut dans Mgo :
Fonction constructeur :
Personnalisé Marshaling :
Pour l'approche de marshaling personnalisé, voici un exemple d'implémentation :
import ( "context" "time" "github.com/globalsign/mgo/bson" ) type User struct { CreatedAt time.Time `json:"created_at" bson:"created_at"` } func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil } func main() { session, err := mgo.Dial("localhost:27017") if err != nil { panic(err) } defer session.Close() c := session.DB("mydb").C("users") // Create a new user with a default CreatedAt timestamp user := User{} err = c.Insert(user) if err != nil { panic(err) } }
Dans cet exemple, lorsqu'un nouveau document utilisateur est inséré dans la base de données, le champ CreatedAt sera automatiquement défini sur l'heure actuelle. Ceci est réalisé en remplaçant la méthode GetBSON() pour fournir une valeur de structure modifiée lorsque le pilote de base de données tente de sérialiser l'objet pour l'insertion.
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!