如何使用所有结构变量从 mongodb 获取数据?

How to get the data from mongodb with all the struct variables?

在此代码中,我试图从 MongoDB 数据库访问 Cardname,但它给了我一个空字符串。虽然它会打印 Cardname 之前的所有变量,但不会打印 CardnameCardname 之后的变量本身。

type UserCredentials struct {
    Fname      string
    Lname      string
    Email      string
    Password   string
    Phone      string
    Country    string
    State      string
    Faddress   string
    Laddress   string
    Postal     string
    Company    string
    Cardname   string
    Cardnumber string
    Expmonth   string
    Expyear    string
}

func FindCard(email, password string) {
    var uc UserCredentials
    collection := Connect.Database("eCommerce").Collection("register")
    if err := collection.FindOne(context.TODO(), bson.M{"email": email, "password": password}).Decode(&uc); err != nil {
        log.Fatal(err)
    } 
    fmt.Println(uc.Cardname)
}

mongo 驱动程序不会神奇地找出您要将哪个文档字段设置到哪个结构字段。

有一些“常识”规则,比如字段名匹配属性(即使首字母不大写),但是字段名Cardname不会与[=24=匹配] 姓名 "card name".

你必须使用结构标签来告诉映射,即 bson 结构标签(这是 mongo-go 驱动程序使用的)。

例如:

type UserCredentials struct {
    Fname      string
    Lname      string
    Email      string
    Password   string
    Phone      string
    Country    string
    State      string
    Faddress   string
    Laddress   string
    Postal     string
    Company    string
    Cardname   string `bson:"card name"`
    Cardnumber string `bson:"card number"`
    Expmonth   string `bson:"expiry month"`
    Expyear    string `bson:"expiry year"`
}