首頁 > 後端開發 > Golang > 如何使用 Go 自動將 Created_at 和 Updated_at 時間戳記新增至 MongoDB 文件?

如何使用 Go 自動將 Created_at 和 Updated_at 時間戳記新增至 MongoDB 文件?

Susan Sarandon
發布: 2024-11-26 08:29:08
原創
662 人瀏覽過

How to Automatically Add Created_at and Updated_at Timestamps to MongoDB Documents Using Go?

在MongoDB 的Golang 結構中加入自動Created_at 和Updated_at 欄位

使用Go 結構將資料插入MongoDB 需要處理填充和_at 的Updated_at 字段,MongoDB本身不支援該功能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 自動將 Created_at 和 Updated_at 時間戳記新增至 MongoDB 文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板