sql >> Database teknologi >  >> NoSQL >> MongoDB

Hent ObjectIdHex-værdi fra mgo-forespørgsel

Værdien forbundet med nøglen "_id" er af typen bson.ObjectId som blot er en string .

bson.M er en type map[string]interface{} , så du har brug for Typepåstand for at få id'et som et ObjectId :

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

Og ObjectId har en ObjectId.Hex() metode, som returnerer præcis, hvad du ønsker:objekt-id'et som en "ren" hex-streng:

fmt.Println(objid.Hex())

Alternativer

objid kan simpelthen konverteres til string fordi dens underliggende type er string . Så du kan bruge en række yderligere muligheder til at konvertere den til en hex string :

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

Hvis du bare vil udskrive det, kan du gøre direkte:

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

Bemærk: Konvertering til string er vigtig ellers fmt pakken ville kalde sin String() metode, der resulterer i en streng som ObjectIdHex("537f700b537461b70c5f0000") og det er det, der ville blive konverteret til hex, hvilket tydeligvis ikke er, hvad du ønsker.

Alternativt du kan bruge encoding/hex pakken og hex.EncodeToString() funktion:

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



  1. Mongo gennemsnitlig aggregeringsforespørgsel uden gruppe

  2. Forslag til simpel .NET distribueret caching-løsning

  3. Hvordan kan man se eventuelle ændringer (ny række) i mongoDB?

  4. $spring og $limit i aggregeringsramme