Heim > Artikel > Backend-Entwicklung > Warum erhalte ich beim Abrufen von Dokumenten mit mgo die Meldung „Objekt-IDs müssen genau 12 Bytes lang sein (hat 24)“?
Fehlerbehebung beim Mongo-ID-Abruf mit mgo in Go
Bei der Verwendung der MGO-Bibliothek für MongoDB-Vorgänge in Go können Sie auf Schwierigkeiten stoßen, eine zu finden Dokument anhand seiner ID. Dieser Artikel zielt darauf ab, ein solches Problem zu beheben und eine Lösung für den Fehler „ObjectIDs müssen genau 12 Bytes lang sein (erhalten 24)“ bereitzustellen.
Problem:
Wann Beim Versuch, ein Dokument anhand seiner ID mithilfe der FindId-Methode abzurufen, erhalten Sie eine Fehlermeldung, die darauf hinweist, dass die angegebene ID 24 Byte lang ist und nicht die erwarteten 12 Byte. Obwohl Sie die Existenz des Dokuments in MongoDB überprüft haben, können Sie es nicht abrufen.
Antwort:
Die Fehlermeldung gibt einen entscheidenden Hinweis: „ObjectIDs müssen genau 12 sein.“ Bytes lang (habe 24).“ Dies bedeutet, dass die von Ihnen verwendete ID kein gültiger ObjectId-Wert ist.
In Go wird die Objekt-ID von MongoDB als 12-Byte-Wert dargestellt. Die von Ihnen verwendete ID ist jedoch 24 Zeichen lang. Die Diskrepanz ergibt sich aus der hexadezimalen Darstellung der ID, bei der jedes Byte als zwei hexadezimale Ziffern dargestellt wird.
Um das Problem zu beheben, müssen Sie die Funktion bson.ObjectIdHex verwenden, um die 24-stellige hexadezimale ID in umzuwandeln ein gültiger bson.ObjectId-Wert. Der korrigierte Code sollte wie folgt aussehen:
<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>
Alternativ können Sie die Methode ObjectId.Hex verwenden, um die hexadezimale Darstellung des ObjectId-Werts zu erhalten. Dadurch können Sie bei Bedarf mit der ID im String-Format arbeiten.
Wenn Sie diese Schritte befolgen, können Sie mithilfe der MGO-Bibliothek effektiv Dokumente anhand ihrer ID abrufen und dabei sicherstellen, dass die angegebene ID im richtigen Format vorliegt Größe.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Abrufen von Dokumenten mit mgo die Meldung „Objekt-IDs müssen genau 12 Bytes lang sein (hat 24)“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!