Go データベース ドライバーを使用した MongoDB の Created_at および Updated_at フィールドの自動作成
Go では、MongoDB データベース ドライバーを使用する場合、created_at構造体の updated_at フィールドには、挿入中にタイムスタンプが自動的に設定されません。この問題を解決するには、カスタム マーシャラーを実装して、構造体を MongoDB に保存する前にこれらのフィールドを更新できます。
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)) }
*User 型の値を保存するときに MarshalBSON() メソッドが呼び出され、 created_at フィールドと updated_at フィールドは、オブジェクトを BSON 表現にマーシャリングする前に現在時刻に設定されます。
このカスタム マーシャラーを使用するには、 User オブジェクトへのポインターをインスタンス化し、MongoDB コレクションに挿入します。
user := &User{Name: "username"} c := client.Database("db").Collection("collection") if _, err := c.InsertOne(context.Background(), user); err != nil { // handle error }
MarshalBSON() メソッドを実装すると、Go 構造体を MongoDB に保存するときに、created_at フィールドと updated_at フィールドのタイムスタンプを自動的に生成できます。フィールドに現在時刻が適切に入力されていることを確認します。
以上がGo の BSON マーシャラーを使用して MongoDB の Created_at フィールドと Updated_at フィールドに自動的に値を入力する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。