Golang의 MGO 라이브러리로 MongoDB ID 검색 문제 해결
Golang에서 MongoDB 작업을 위해 mgo 라이브러리를 사용할 때 개발자는 다음과 같은 문제에 직면할 수 있습니다. FindId 메서드를 사용하여 ID를 찾을 수 없습니다. 이 문제는 다음 코드 조각과 해당 출력에서 분명하게 드러납니다.
<code class="go">session.SetMode(mgo.Monotonic, true) coll := session.DB("aaaw_web").C("cron_emails") var result Result fmt.Printf("%v", message.ID) err = coll.FindId(bson.ObjectId(message.ID)).One(&result) fmt.Printf("%v", result) fmt.Println(err)</code>
출력:
595f2c1a6edcba0619073263 {ObjectIdHex("") 0 0 0 0 { 0 false 0 } 0 0 0 0 0 0 0} ObjectIDs must be exactly 12 bytes long (got 24) not found
MongoDB에 존재하는 문서에도 불구하고 코드는 문서를 검색하지 못합니다. 이 문제를 해결하려면 MongoDB의 개체 ID 특성을 이해하는 것이 중요합니다.
MongoDB의 개체 ID 이해
MongoDB의 개체 ID는 12바이트 값입니다. 다음 구성 요소로 구성됩니다.
16진수 문자열을 MongoDB 객체 ID로 변환
제공된 코드 조각에서 message.ID의 값은 다음과 같습니다. 개체 ID의 24자 16진수 문자열 표현입니다. 이 문자열을 MongoDB 개체 ID로 변환하려면 bson.ObjectIdHex() 함수를 사용해야 합니다.
<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>
결론
객체 ID의 특성을 이해함으로써 MongoDB에서 16진수 표현과 개체 ID 간을 변환하는 적절한 기능을 활용하면 개발자는 mgo 라이브러리를 사용하여 문서를 효과적으로 검색할 수 있습니다.
위 내용은 mgo.FindId()가 16진수 개체 ID가 있는 문서를 검색하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!