如何从mongo-go-driver游标中获取ObjectID作为字符串?

问题描述 投票:0回答:2

我想将ObjectID作为字符串获取,因为我还有其他存储类型,所以我想避免在我的结构中使用Primitive.ObjectID来保持层的独立性。我是Golang的新手,谢谢。

package listing

type Card struct {
    ID       string
    Hanzi    string
    Pinyin   string
    Traducao string
}

我的存储文件:包装储物

func (m *Mongodb)GetCards() []*listing.Card {
    var list []*listing.Card

    collection := m.Client.Database("flashcards").Collection("cards")
    cur, err := collection.Find(context.TODO(), bson.M{})

    if err != nil {
        log.Fatal("Erro buscando cards:", err)
    }
    for cur.Next(context.TODO()) {
        var card listing.Card
        err = cur.Decode(&card)
        if err != nil {
            log.Fatal("Erro decodificando documento", err)
        }
        list = append(list, &card)
    }
    return list
}
go bson mongo-go
2个回答
0
投票

好吧,我知道了。我创建了另一个结构来容纳ObjectId

type HexId struct {
    ID primitive.ObjectID `bson:"_id"`
}

然后我使用Hex()将值传递给Card.ID

err = cur.Decode(&card)
err = cur.Decode(&hexId)
card.ID = hexId.ID.Hex()

现在我可以用它来建立链接。


0
投票

您可以使用这种方式

type Card struct {
    ObjectID primitive.ObjectID `json:"-" bson:"_id"`
    ID       string             `bson:"-"`
    Hanzi    string
    Pinyin   string
    Traducao string
}

err = cur.Decode(&card)
card.ID = card.ObjectID.Hex()
© www.soinside.com 2019 - 2024. All rights reserved.