首页 > 后端开发 > Golang > 如何使用 Go 自动将 Created_at 和 Updated_at 时间戳添加到 MongoDB 文档?

如何使用 Go 自动将 Created_at 和 Updated_at 时间戳添加到 MongoDB 文档?

Susan Sarandon
发布: 2024-11-26 08:29:08
原创
661 人浏览过

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

在 MongoDB 的 Golang 结构中添加自动 Created_at 和 Updated_at 字段

使用 Go 结构将数据插入 MongoDB 需要处理created_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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板