MongoDB용 Golang 구조체에 자동화된 Created_at 및 업데이트된_at 필드 추가
Go 구조체를 사용하여 MongoDB에 데이터를 삽입하려면 Created_at의 자동 채우기를 처리해야 합니다. 및 update_at 필드(MongoDB에서 기본적으로 지원하지 않는 기능)
이 문제를 해결하려면 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 및 update_at 필드를 자동으로 업데이트할 수 있습니다.
위 내용은 Go를 사용하여 MongoDB 문서에 Created_at 및 업데이트된_at 타임스탬프를 자동으로 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!