


Wie füge ich mit Go automatisch die Zeitstempel Created_at und Updated_at zu MongoDB-Dokumenten hinzu?
Nov 26, 2024 am 08:29 AMHinzufü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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibe ich Dateien in Go Language bequem?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie schreibe ich Benchmarks, die die reale Leistung in Go genau widerspiegeln?
