直接先上代码
import (
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
//结构体例子
type Person struct {
ID bson.ObjectId `bson:"_id,omitempty"` //类型是bson.ObjectId
Name string `bson:"xingming"` //这里变量名和数据库里的名字不一致
Gender int `bson: "xingbie"` //这个是错误例子,bson:后面不能有空格
Age int //默认查询age
}
//查询
func main()
{
session, err := mgo.Dial("127.0.0.1")
if err != nil { panic(err) }
defer session.Close()
c := session.DB("demo").C("person")
result := Person{}
err = c.Find(bson.M{"name": "Zhangsan"}).One(&result)
if err != nil { panic(err) }
}
//结果
{ObjectIdHex("5d49321a9cfd46107214897a") Zhangsan 0 33}
//ObjectIdHex转string
str := id.Hex()
//string转ObjectIdHex
id := bson.ObjectIdHex(str)
注意点
1.struct内的变量名需大写否则查询不到
2._id是bson.ObjectId类型
3.变量名可以和数据库字段名不一样,但是要用Tag的方式声明出来
4.bson:“xingbie” 这里冒号后面不能有空格,否则mgo会识别不出这个TAG,默认以变量名首字母小写当作字段名
本文介绍了在Golang中使用mgo库查询数据库时,关于_id查询的示例代码以及需要注意的几点事项。包括struct变量名需大写、_id的类型为bson.ObjectId、变量名与数据库字段名不同时需使用Tag声明、以及bson标签的格式要求。
791

被折叠的 条评论
为什么被折叠?



