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 サイトの他の関連記事を参照してください。