Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich mit Go automatisch die Zeitstempel Created_at und Updated_at zu MongoDB-Dokumenten hinzu?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-26 08:29:08588Durchsuche

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))
}

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!

Stellungnahme:
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