sql >> Databáze >  >> NoSQL >> MongoDB

Získejte hodnotu ObjectIdHex z dotazu mgo

Hodnota spojená s klíčem "_id" je typu bson.ObjectId což je jednoduše string .

bson.M je typ map[string]interface{} , takže potřebujete Určení typu získat ID jako ObjectId :

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

A ObjectIdObjectId.Hex() metoda, která vrátí přesně to, co chcete:ID objektu jako "čistý" hexadecimální řetězec:

fmt.Println(objid.Hex())

Alternativy

objid lze jednoduše převést na string protože jeho základní typ je string . Můžete tedy použít řadu dalších možností, jak jej převést na hexadecimální string :

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

Pokud jej chcete pouze vytisknout, můžete to udělat přímo:

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

Poznámka: Převede se na string jinak je důležitý fmt balíček by zavolal svůj String() výsledkem je řetězec jako ObjectIdHex("537f700b537461b70c5f0000") a to je to, co by bylo převedeno na hex, což zjevně není to, co chcete.

Alternativně můžete použít encoding/hex balíček a hex.EncodeToString() funkce:

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



  1. Získejte klíče a hodnoty Redis na příkazovém řádku

  2. Jak formátovat data v Modelu před uložením v Mongoose (ExpressJS)

  3. Jak obnovit konkrétní kolekci v MongoDB pomocí logického zálohování

  4. Návrh tabulky MongoDB a výkon dotazů