>백엔드 개발 >Golang >mgo로 문서를 검색할 때 \'ObjectID의 길이는 정확히 12바이트여야 합니다(24바이트)\'라는 메시지가 나타나는 이유는 무엇입니까?

mgo로 문서를 검색할 때 \'ObjectID의 길이는 정확히 12바이트여야 합니다(24바이트)\'라는 메시지가 나타나는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-01 09:27:30212검색

Why Am I Getting

Go에서 mgo를 사용한 Mongo ID 검색 문제 해결

Go에서 MongoDB 작업을 위해 mgo 라이브러리를 사용할 때, ID로 문서를 작성합니다. 이 문서의 목표는 "ObjectID의 길이가 정확히 12바이트여야 합니다(24바이트)."라는 오류에 대한 솔루션을 제공하여 그러한 문제 중 하나를 해결하는 것입니다.

문제:

FindId 메서드를 사용하여 해당 ID로 문서를 검색하려고 하면 지정된 ID의 길이가 예상된 12바이트가 아닌 24바이트임을 나타내는 오류가 표시됩니다. MongoDB에서 문서의 존재를 확인했음에도 불구하고 검색에 실패했습니다.

답변:

오류 메시지는 중요한 힌트를 제공합니다. "ObjectID는 정확히 12여야 합니다. 바이트 길이(24개)." 이는 사용 중인 ID가 유효한 ObjectId 값이 아님을 의미합니다.

Go에서는 MongoDB의 객체 ID가 12바이트 값으로 표시됩니다. 그런데 사용하고 있는 ID의 길이가 24자입니다. 불일치는 ID의 16진수 표현으로 인해 발생합니다. 여기서 각 바이트는 두 개의 16진수 숫자로 표시됩니다.

문제를 해결하려면 bson.ObjectIdHex 함수를 활용하여 24자 16진수 ID를 16진수 ID로 변환해야 합니다. 유효한 bson.ObjectId 값. 수정된 코드는 다음과 같습니다.

<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>

또는 ObjectId.Hex 메서드를 사용하여 ObjectId 값의 16진수 표현을 얻을 수 있습니다. 이렇게 하면 필요할 때 문자열 형식의 ID로 작업할 수 있습니다.

이 단계를 따르면 mgo 라이브러리를 사용하여 ID별로 문서를 효과적으로 검색할 수 있으며 지정된 ID가 올바른 형식이고 크기입니다.

위 내용은 mgo로 문서를 검색할 때 \'ObjectID의 길이는 정확히 12바이트여야 합니다(24바이트)\'라는 메시지가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.