sql >> Database >  >> NoSQL >> MongoDB

Verkrijg ObjectIdHex-waarde van mgo-query

De waarde die is gekoppeld aan sleutel "_id" is van het type bson.ObjectId dat is gewoon een string .

bson.M is een type map[string]interface{} , dus je hebt Typebevestiging nodig om de id te krijgen als een ObjectId :

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

En de ObjectId heeft een ObjectId.Hex() methode die precies teruggeeft wat je wilt:het object-ID als een "pure" hexadecimale tekenreeks:

fmt.Println(objid.Hex())

Alternatieven

objid kan eenvoudig worden geconverteerd naar string omdat het onderliggende type string . is . Je kunt dus nog een aantal andere opties gebruiken om het om te zetten in een hex string :

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

Als u het alleen wilt afdrukken, kunt u direct het volgende doen:

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

Opmerking: Converteren naar string is belangrijk anders is de fmt pakket zou zijn String() . aanroepen methode die resulteert in een string zoals ObjectIdHex("537f700b537461b70c5f0000") en dit is wat zou worden omgezet in hex, wat duidelijk niet is wat je wilt.

Alternatief je kunt de encoding/hex gebruiken pakket en de hex.EncodeToString() functie:

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



  1. MongoDB extraheert waarden uit BasicDBObject (Java)

  2. MongoDB-nummerveld wordt niet ingevoegd of bijgewerkt met het nummer dat ik invoer

  3. Opgeslagen JavaScript-functies gebruiken in de aggregatiepijplijn, MapReduce of runCommand

  4. Vind documenten met arrays die geen document bevatten met een bepaalde veldwaarde in MongoDB