sql >> Databasteknik >  >> NoSQL >> MongoDB

Hämta ObjectIdHex-värde från mgo-frågan

Värdet som är kopplat till nyckeln "_id" är av typen bson.ObjectId som helt enkelt är en string .

bson.M är en typ map[string]interface{} , så du behöver Typpåstående för att få id:t som ett ObjectId :

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

Och ObjectId har en ObjectId.Hex() metod som returnerar exakt vad du vill ha:objekt-id som en "ren" hex-sträng:

fmt.Println(objid.Hex())

Alternativ

objid kan helt enkelt konverteras till string eftersom dess underliggande typ är string . Så du kan använda ett antal ytterligare alternativ för att konvertera den till en hexadecimal string :

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

Om du bara vill skriva ut det kan du göra direkt:

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

Obs! Konverterar den till string är viktigt annars fmt paketet skulle anropa dess String() metod som resulterar i en sträng som ObjectIdHex("537f700b537461b70c5f0000") och det här är vad som skulle konverteras till hex, vilket helt klart inte är vad du vill ha.

Alternativt du kan använda encoding/hex paketet och hex.EncodeToString() funktion:

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



  1. Hur ändrar man datatyp för kapslat fält i Mongo-dokument?

  2. Få den senaste skivan från mongodb collection

  3. MongoDB $pull array 2 nivå

  4. koppla mongoose till mongoDB-atlas och nodejs