Hinzufügen automatisierter Felder „Create_at“ und „Updated_at“ in der Golang-Struktur für MongoDB
Das Einfügen von Daten in MongoDB mit einer Go-Struktur erfordert die Handhabung der automatischen Auffüllung von „created_at“. und „update_at“-Felder, eine Funktion, die von MongoDB nicht grundsätzlich unterstützt wird Server.
Um dieses Problem zu beheben, sollten Sie die Implementierung eines benutzerdefinierten Marshallers in Betracht ziehen, indem Sie die bson.Marshaler-Schnittstelle implementieren. Die Funktion MarshalBSON() wird aufgerufen, wenn ein Wert vom Typ „Benutzer“ beibehalten wird.
Hier ist ein Codeausschnitt, der die Implementierung demonstriert:
type User struct { ID primitive.ObjectID `bson:"_id,omitempty"` CreatedAt time.Time `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` Name string `bson:"name"` } func (u *User) MarshalBSON() ([]byte, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } u.UpdatedAt = time.Now() type my User return bson.Marshal((*my)(u)) }
Beachten Sie, dass die Methode MarshalBSON() einen Zeiger verwendet Empfänger, daher ist es notwendig, einen Zeiger auf die Benutzerinstanz zu verwenden.
Beispiel Verwendung:
user := &User{Name: "username"} c := client.Database("db").Collection("collection") if _, err := c.InsertOne(context.Background(), user); err != nil { // handle error }
Mit dieser Technik können Sie die Felder „created_at“ und „update_at“ automatisch aktualisieren, wenn Sie ein MongoDB-Dokument über die Go-Struktur einfügen oder aktualisieren.
Das obige ist der detaillierte Inhalt vonWie füge ich mit Go automatisch die Zeitstempel Created_at und Updated_at zu MongoDB-Dokumenten hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!