Maison >développement back-end >Golang >Pourquoi est-ce que j'obtiens \'Les ID d'objet doivent avoir exactement 12 octets de long (j'en ai 24)\' lors de la récupération de documents avec mgo ?

Pourquoi est-ce que j'obtiens \'Les ID d'objet doivent avoir exactement 12 octets de long (j'en ai 24)\' lors de la récupération de documents avec mgo ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 09:27:30212parcourir

Why Am I Getting

Dépannage de la récupération d'ID Mongo avec mgo dans Go

En utilisant la bibliothèque mgo pour les opérations MongoDB dans Go, vous pouvez rencontrer des difficultés pour trouver un document par son identifiant. Cet article vise à résoudre l'un de ces problèmes, en fournissant une solution à l'erreur « Les ID d'objet doivent avoir une longueur exacte de 12 octets (24 ont été obtenus). »

Problème :

Quand Lorsque vous tentez de récupérer un document par son ID à l'aide de la méthode FindId, vous recevez une erreur indiquant que l'ID spécifié fait 24 octets au lieu des 12 octets attendus. Malgré la vérification de l'existence du document dans MongoDB, vous ne parvenez pas à le récupérer.

Réponse :

Le message d'erreur fournit un indice crucial : "Les ObjectID doivent être exactement 12 octets de long (j'en ai 24)." Cela signifie que l'ID que vous utilisez n'est pas une valeur ObjectId valide.

Dans Go, l'ID d'objet de MongoDB est représenté sous la forme d'une valeur de 12 octets. Cependant, l’identifiant que vous utilisez comporte 24 caractères. L'écart provient de la représentation hexadécimale de l'ID, où chaque octet est représenté par deux chiffres hexadécimaux.

Pour résoudre le problème, vous devez utiliser la fonction bson.ObjectIdHex pour convertir l'ID hexadécimal à 24 caractères en une valeur bson.ObjectId valide. Le code corrigé devrait ressembler à ceci :

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

Vous pouvez également utiliser la méthode ObjectId.Hex pour obtenir la représentation hexadécimale de la valeur ObjectId. Cela vous permettra de travailler avec l'ID au format chaîne si nécessaire.

En suivant ces étapes, vous pouvez récupérer efficacement des documents par leur ID à l'aide de la bibliothèque mgo, en vous assurant que l'ID spécifié est au format correct et taille.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn