sql >> データベース >  >> NoSQL >> MongoDB

mgoクエリからObjectIdHex値を取得します

    キー"_id"に関連付けられた値 タイプは bson.ObjectId これは単にstring

    bson.M タイプはmap[string]interface{} 、したがって、タイプアサーション が必要です。 IDをObjectIdとして取得します :

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

    そしてObjectId ObjectId.Hex()があります 必要なものを正確に返すメソッド:「純粋な」16進文字列としてのオブジェクトID:

    fmt.Println(objid.Hex())
    

    代替案

    objid 簡単にstringに変換できます 基になるタイプがstringであるため 。したがって、さらに多くのオプションを使用して、16進数のstringに変換できます。 :

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

    印刷したいだけの場合は、直接行うことができます:

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

    注: stringに変換します それ以外の場合は重要ですfmt パッケージはそのString()を呼び出します ObjectIdHex("537f700b537461b70c5f0000")のような文字列になるメソッド これは16進数に変換されるものであり、明らかにあなたが望むものではありません。

    または encoding/hexを使用できます パッケージと hex.EncodeToString() 機能:

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



    1. パブ/サブシナリオのRedisとServiceBus

    2. MongoDBの単一のコレクション内のドキュメント間のセットのセット交差を見つける方法は?

    3. Symfony2のmongoDBは私のエンティティの代わりにloggablecursorを返します

    4. MongoDBのテストデータの作成