ホームページ > バックエンド開発 > Golang > Go の Mgo を使用して MongoDB ドキュメントのデフォルトの日付を定義する方法

Go の Mgo を使用して MongoDB ドキュメントのデフォルトの日付を定義する方法

Mary-Kate Olsen
リリース: 2024-11-22 17:03:53
オリジナル
1077 人が閲覧しました

How to Define Default Dates in MongoDB Documents Using Go's Mgo?

Go の Mgo を使用した Mongo ドキュメントのデフォルト日付の定義

MongoDB では、ドキュメント フィールドのデフォルトのタイムスタンプを定義するのが一般的です。ただし、Go with Mgo では、フィールドのデフォルト値を直接設定する方法はありません。

デフォルト値を持つカスタム コンストラクター

1 つの方法は、デフォルト値を設定するカスタム コンストラクター関数を作成することです。

func NewUser() *User {
    return &User{
        CreatedAt: time.Now(),
    }
}
ログイン後にコピー

これにより、このコンストラクターを使用して作成されたすべての新しい User 構造体がデフォルトの CreatedAt を持つようになります。

カスタム GetBSON マーシャラー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート