使用mgo,下面是mgo官网的一段代码。
细看之下发现一个问题,Person中的变量定义是大写的"Name"和"Phone",但是后边Find的使用却是使用小写的"name"
type Person struct {
Name string // 这里是大写的
Phone string
}
func main() {
session, err := mgo.Dial("127.0.0.1:27017")
checkFatalError(err)
defer session.Close()
c := session.DB("test").C("yyy")
err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},
&Person{"Cla", "+55 53 8402 8510"})
result := Person{}
err = c.Find(bson.M{"name": "Ale"}).One(&result) // 这里却是小写的
if err != nil {
panic(err)
}
}
数据库中的字段确实是小写的。
无意中发现在struct的变量上定义tag即可作为数据库中的字段名
type Person struct {
Name string "Name" // 定义tag就可以在数据库中用大写的字段了
Phone string "Phone"
}