golang里如何用mgo查询_id以及一些注意事项

本文介绍了在Golang中使用mgo库查询数据库时,关于_id查询的示例代码以及需要注意的几点事项。包括struct变量名需大写、_id的类型为bson.ObjectId、变量名与数据库字段名不同时需使用Tag声明、以及bson标签的格式要求。
直接先上代码
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,默认以变量名首字母小写当作字段名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值