Wie füge ich mit Go automatisch die Zeitstempel Created_at und Updated_at zu MongoDB-Dokumenten hinzu?

Susan Sarandon
Freigeben: 2024-11-26 08:29:08
Original
590 Leute haben es durchsucht

How to Automatically Add Created_at and Updated_at Timestamps to MongoDB Documents Using Go?

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))
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage