TIL 16 - MongoDB ↔ golang 데이터 다루기 - ObjectID

프동프동·2023년 2월 10일
0

TIL

목록 보기
16/46
post-thumbnail

Mongo DB ↔ golang 데이터 다루기

golang으로 데이터를 다루다 mongoDB의 id 값 다루는 과정 중 정리해두면 좋을 것 같아 작성하게 되었습니다.

ObjectId 다루기

Collection에 데이터를 생성하면 ObjectId가 자동으로 함께 생성된다.

type Person struct {
	Name string `bson:"name"`
	Age  int    `bson:"age"`
	Pnum string `bson:"pnum,omitempty"`
}

ObjectId를 통해 데이터 찾기

  • 함수
    func ObjectIDFromHex(s string) (ObjectID, error)
    해당 함수를 사용하면 string 값을 받아 ObjectID로 변환할 수 있다.
  • 사용 예제
    var person Person
    pId, err := primitive.ObjectIDFromHex("63a95f1a80eab6d85dca3130")
    err = coll.FindOne(context.TODO(), bson.M{"_id": pId}).Decode(&person)
    fmt.Printf("%v\n", person)
  • ObjectID 값을 함수의 파라미터로 받아 처리하기
    var person Person
    pId, err := primitive.ObjectIDFromHex("63a95f1a80eab6d85dca3130")
    
    func(pId primitive.ObjectID) {
    	err = coll.FindOne(context.TODO(), bson.M{"_id": pId}).Decode(&person)
    	fmt.Printf("%v\n", person)
    }(pId)

ObjectID 생성하기

  • 함수
    func NewObjectID() ObjectID
  • 사용 방법
    newId := primitive.NewObjectID()
    fmt.Println(newId)

time.Time을 통해 ObjectID 생성하기

  • 함수
    func NewObjectIDFromTimestamp(timestamp time.Time) ObjectID
  • 사용 방법
    tempTime := time.Now()
    newId := primitive.NewObjectIDFromTimestamp(tempTime)
    fmt.Println(newId)
profile
좋은 개발자가 되고싶은

0개의 댓글