尝试使用mongo go driver方法使用findOne对获取的单个用户文档进行解码并将其解码为结构。但是,我无法解码struct字段上的文档ID。我尝试在他们的示例或其他网站/博客中寻找它,但是没有运气。我正在与:

  • go v1.13.4
  • mongo v4.2.1
  • mongo-go-driver v1.1.3

  • 下面是代码片段:
    type User struct {
        ID            interface{} `json:"_id"`
        Name          string
        Email         string
        Password      string // hashed
    }
    
    /* Other versions of User struct which I already tried
    
    type User struct {
        ID            interface{}
        Name          string
        Email         string
        Password      string // hashed
    }
    
    type User struct {
        ID            string `json:"_id"`
        Name          string
        Email         string
        Password      string // hashed
    }
    
    type User struct {
        ID            string
        Name          string
        Email         string
        Password      string // hashed
    }
    */
    
    func main() {
        conn := service.MongoConn() // get a mongo connection on the required database
        user := &service.User{}
        err := conn.Collection("users").
                 FindOne(context.Background(), bson.M{"email": "foo@bar.com"}).
                 Decode(user)
        if err != nil {
            panic(err)
        }
        fmt.Printf("%+v\n", user)
    }
    

    我想在其他集合中的其他文档中使用doc ID作为引用,否则,我必须求助于电子邮件等其他唯一字段。

    最佳答案

    结构应如下所示:

    import "go.mongodb.org/mongo-driver/bson/primitive"
    
    type User struct {
        ID primitive.ObjectID `bson:"_id"`
        ...
    }
    

    要将_id转换为字符串,请使用xx.ID.Hex()

    09-11 19:18
    查看更多