ホームページ >バックエンド開発 >Golang >Go を使用して MongoDB ドキュメントに Created_at および Updated_at タイムスタンプを自動的に追加する方法

Go を使用して MongoDB ドキュメントに Created_at および Updated_at タイムスタンプを自動的に追加する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-26 08:29:08609ブラウズ

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

MongoDB の Golang 構造体に自動化された Created_at および Updated_at フィールドを追加する

Go 構造体を使用して MongoDB にデータを挿入するには、created_at の自動生成を処理する必要があります。 MongoDB では本質的にサポートされていない機能である updated_at フィールドserver.

これに対処するには、bson.Marshaler インターフェイスを実装してカスタム マーシャラーを実装することを検討してください。 MarshalBSON() 関数は、User 型の値を永続化するときに呼び出されます。

実装を示すコード スニペットは次のとおりです。

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

MarshalBSON() メソッドはポインターを使用することに注意してください。したがって、User インスタンスへのポインターを使用する必要があります。

例使用法:

user := &User{Name: "username"}

c := client.Database("db").Collection("collection")
if _, err := c.InsertOne(context.Background(), user); err != nil {
    // handle error
}

この手法を採用すると、Go 構造体経由で MongoDB ドキュメントを挿入または更新するときに、created_at フィールドと updated_at フィールドを自動的に更新できます。

以上がGo を使用して MongoDB ドキュメントに Created_at および Updated_at タイムスタンプを自動的に追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。