MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Uzyskaj wartość ObjectIdHex z zapytania mgo

Wartość powiązana z kluczem "_id" jest typu bson.ObjectId który jest po prostu string .

bson.M jest typem map[string]interface{} , więc potrzebujesz Aercji typu aby uzyskać identyfikator jako ObjectId :

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

Oraz ObjectId ma ObjectId.Hex() metoda, która zwraca dokładnie to, czego chcesz:identyfikator obiektu jako „czysty” ciąg szesnastkowy:

fmt.Println(objid.Hex())

Alternatywne

objid można po prostu przekonwertować na string ponieważ jego podstawowym typem jest string . Możesz więc użyć wielu innych opcji, aby przekonwertować go na string szesnastkowy :

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

Jeśli chcesz go tylko wydrukować, możesz to zrobić bezpośrednio:

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

Uwaga: Konwertowanie go na string jest ważne, w przeciwnym razie fmt pakiet wywołałby jego String() metoda, która skutkuje ciągiem takim jak ObjectIdHex("537f700b537461b70c5f0000") i to właśnie zostanie zamienione na szesnastkowe, co wyraźnie nie jest tym, czego chcesz.

Alternatywnie możesz użyć encoding/hex pakiet i hex.EncodeToString() funkcja:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przegląd Atlasu MongoDB:część pierwsza

  2. Spark nie wykonuje zadań

  3. Jak wyszukiwać dokument według oid w mongoengine

  4. Jak wyszukiwać w tablicy tablicy obiektów w mongodb

  5. W MongoDB, jeśli indeks znajduje się na 3 polach, możemy użyć tego indeksu podczas zapytania o 2 pola? (wildcard na 3 polu)