Heim > Artikel > Backend-Entwicklung > Warum kann mgo.FindId() keine Dokumente mit einer hexadezimalen Objekt-ID abrufen?
Fehlerbehebung beim MongoDB-ID-Abruf mit der MGO-Bibliothek von Golang
Bei der Verwendung der MGO-Bibliothek für MongoDB-Vorgänge in Golang können Entwickler auf ein Problem stoßen, bei dem sie können mit der FindId-Methode keine ID finden. Dieses Problem wird aus dem folgenden Codeausschnitt und seiner Ausgabe deutlich:
<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>
Ausgabe:
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
Obwohl das Dokument in MongoDB vorhanden ist, kann der Code es nicht abrufen. Um dieses Problem zu lösen, ist es wichtig, die Natur der Objekt-IDs in MongoDB zu verstehen.
Objekt-IDs in MongoDB verstehen
Objekt-IDs in MongoDB sind 12-Byte-Werte bestehend aus den folgenden Komponenten:
Konvertieren einer Hexadezimalzeichenfolge in eine MongoDB-Objekt-ID
Im bereitgestellten Codeausschnitt lautet der Wert von message.ID eine 24-stellige hexadezimale Zeichenfolgendarstellung der Objekt-ID. Um diese Zeichenfolge in eine MongoDB-Objekt-ID zu konvertieren, müssen Sie die Funktion bson.ObjectIdHex() verwenden:
<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>
Fazit
Durch Verständnis der Natur von Objekt-IDs In MongoDB und unter Verwendung der entsprechenden Funktionen zum Konvertieren zwischen hexadezimalen Darstellungen und Objekt-IDs können Entwickler Dokumente mithilfe der MGO-Bibliothek effektiv abrufen.
Das obige ist der detaillierte Inhalt vonWarum kann mgo.FindId() keine Dokumente mit einer hexadezimalen Objekt-ID abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!