"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o MGO.findid () não recupera documentos com um ID de objeto hexadecimal?

Por que o MGO.findid () não recupera documentos com um ID de objeto hexadecimal?

Postado em 2025-03-23
Navegar:470

Why Does mgo.FindId() Fail to Retrieve Documents with a Hexadecimal Object ID?

Troubleshooting MongoDB ID Retrieval with Golang's MGO Library

When using the mgo library for MongoDB operations in Golang, developers may encounter an issue where they are unable to find an ID using the FindId method. Esse problema é evidente no snippet de código a seguir e sua saída:

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)

output:

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

apesar do documento existente no MongoDB, o código falha ao recuperá -lo. Para resolver esse problema, é crucial entender a natureza dos IDs de objeto em MongoDB. Criado

3 bytes do identificador da máquina 2 bytes do processo identificador

3 bytes de snTes aleatórios

  • Value of Message.id é uma representação de string hexadecimal de 24 caracteres do ID do objeto. Para converter esta string em um ID do objeto MONGODB, você deve usar a função bson.objectidhex ():
  • err = col.findid (bson.objectidhex (message.id). One (& resultado)
  • e utilizando as funções apropriadas para converter entre representações hexadecimais e IDs de objetos, os desenvolvedores podem recuperar efetivamente documentos usando a biblioteca MGO.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3