«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему mgo.findid () не может получить документы с помощью идентификатора шестнадцатеричного объекта?

Почему mgo.findid () не может получить документы с помощью идентификатора шестнадцатеричного объекта?

Опубликовано в 2025-03-23
Просматривать:441

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

Устранение поиска идентификатора MongoDB с библиотекой MGO Golang

При использовании библиотеки MGO для операций MongodB в Golang разработчики могут столкнуться с проблемой, где они не могут найти ID, использующий метод FindID. Эта проблема очевидна из следующего фрагмента кода и его вывода:

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

, несмотря на документ, существующий в MongoDB, код не может получить его. Чтобы решить эту проблему, крайне важно понять природу идентификаторов объекта в mongodb.

понимание идентификаторов объекта в mongodb

идентификатора объекта в mongodb-это 12-байтовые значения, состоящие из следующих компонентов: &&]

  • 3 байта идентификатора машины
  • 2 байта идентификатора процесса
  • 3 байта случайных байтов
преобразование Hexadecimal String Sneping Snepp значение сообщения. Чтобы преобразовать эту строку в идентификатор объекта MongoDB, вы должны использовать функцию bson.objectidhex ():

err = coll.findid (bson.objectidhex (message.id)). One (& result)

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3