MongoDB では、ドキュメント フィールドのデフォルトのタイムスタンプを定義するのが一般的です。ただし、Go with Mgo では、フィールドのデフォルト値を直接設定する方法はありません。
1 つの方法は、デフォルト値を設定するカスタム コンストラクター関数を作成することです。
func NewUser() *User { return &User{ CreatedAt: time.Now(), } }
これにより、このコンストラクターを使用して作成されたすべての新しい User 構造体がデフォルトの CreatedAt を持つようになります。
もう 1 つのオプションは、BSON の bson.Getter インターフェイスを使用してカスタム シリアル化ロジックを実装することです。
func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil }
ユーザーを BSON にマーシャリングする場合、これはGetBSON 関数が呼び出され、CreatedAt フィールドに現在時刻が設定されていない場合はその値が設定されます。 set.
どちらの方法でも、既存のドキュメントを更新する場合でも、CreatedAt フィールドは現在時刻で上書きされることに注意してください。これを回避するには、GetBSON にチェックを追加して、値がゼロの場合にのみフィールドを設定します。
さらに、カスタム マーシャリング アプローチでは、time.Time を含む型に対して bson.Getter を実装する必要があります。デフォルト値を含むフィールド。
以上がGo の Mgo を使用して MongoDB ドキュメントのデフォルトの日付を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。