MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Получаване на ObjectIdHex стойност от mgo заявка

Стойността, свързана с ключ "_id" е от тип bson.ObjectId което е просто string .

bson.M е тип map[string]interface{} , така че имате нужда от Твърдение за тип за да получите идентификатора като ObjectId :

objid, ok := m["_id"].(ObjectId)
if !ok {
    panic("Not ObjectId")
}

И ObjectId има ObjectId.Hex() метод, който връща точно това, което искате:идентификаторът на обекта като "чист" шестнадесетичен низ:

fmt.Println(objid.Hex())

Алтернативи

objid може просто да се преобразува в string защото основният му тип е string . Така че можете да използвате редица допълнителни опции, за да го конвертирате в шестнадесетичен string :

hexid := fmt.Sprintf("%x", string(objid))

Ако просто искате да го отпечатате, можете да направите директно:

fmt.Printf("%x", string(objid))

Забележка: Конвертирането му в string важен е друг fmt пакетът ще извика своя String() метод, който води до низ като ObjectIdHex("537f700b537461b70c5f0000") и това е, което ще бъде преобразувано в шестнадесетичен, което очевидно не е това, което искате.

Алтернативно можете да използвате encoding/hex пакет и hex.EncodeToString() функция:

hexid := hex.EncodeToString([]byte(objid))



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Задаването на TTL не работи в Mongodb c#

  2. Как да деинсталирате mongodb от Windows

  3. грешка при свързване с хост:не може да се свърже със сървър:грешка при избор на сървър:таймаут за избор на сървър текуща топология:Тип:Единични сървъри

  4. Заявете MongoDB с критерии за дължина

  5. mongod, mac os x - rlimits предупреждение