In MongoDB ist es möglich, Standardwerte für Dokumentfelder festzulegen. Dies kann nützlich sein, um Felder während der Dokumenterstellung automatisch mit bestimmten Werten zu füllen, beispielsweise ein Zeitstempelfeld.
In Mgo, dem Go-Treiber für MongoDB, gibt es keine direkte Möglichkeit zur Definition Standardwerte für Felder wie im Mongoose-JavaScript-Modell. Entwickler suchen nach einer Lösung, um bei der Erstellung automatisch einen Datums- oder Zeitwert in das Feld eines Dokuments einzufügen.
Es gibt zwei Hauptansätze zum Festlegen von Standarddatumswerten in Mgo:
Konstruktorfunktion:
Benutzerdefiniert Marshalling:
Für den benutzerdefinierten Marshalling-Ansatz finden Sie hier eine Beispielimplementierung:
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) } }
Wenn in diesem Beispiel ein neues Benutzerdokument in die Datenbank eingefügt wird, wird das Feld „CreatedAt“ automatisch auf die aktuelle Zeit gesetzt. Dies wird erreicht, indem die GetBSON()-Methode überschrieben wird, um einen geänderten Strukturwert bereitzustellen, wenn der Datenbanktreiber versucht, das Objekt zum Einfügen zu serialisieren.
Das obige ist der detaillierte Inhalt vonWie lege ich Standarddatumswerte für Time.Time-Felder in MGO-Dokumenten fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!