MongoDB では、ドキュメント フィールドにデフォルト値を設定できます。これは、タイムスタンプ フィールドなど、ドキュメントの作成中にフィールドに特定の値を自動的に入力する場合に便利です。
MongoDB の Go ドライバーである Mgo では、定義する直接的な方法がありません。 Mongoose JavaScript モデルと同様のフィールドのデフォルト値。開発者は、ドキュメントの作成時に日付または時刻の値をドキュメントのフィールドに自動的に挿入するソリューションを探しています。
Mgo でデフォルトの日付値を設定するには、主に 2 つの方法があります。
コンストラクター関数:
カスタム マーシャリング:
カスタム マーシャリング アプローチの例を次に示します。実装:
import ( "context" "time" "github.com/globalsign/mgo/bson" ) type User struct { CreatedAt time.Time `json:"created_at" bson:"created_at"` } func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil } func main() { session, err := mgo.Dial("localhost:27017") if err != nil { panic(err) } defer session.Close() c := session.DB("mydb").C("users") // Create a new user with a default CreatedAt timestamp user := User{} err = c.Insert(user) if err != nil { panic(err) } }
この例では、新しいユーザー ドキュメントがデータベースに挿入されると、CreatedAt フィールドが現在時刻に自動的に設定されます。これは、データベース ドライバーがオブジェクトを挿入するためにシリアル化しようとするときに、GetBSON() メソッドをオーバーライドして、変更された構造体の値を提供することによって実現されます。
以上がMgo ドキュメントの Time.Time フィールドのデフォルトの日付値を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。