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