使用gopkg.in/mgo.v2库操作,插入操作主要使用mongodb中Collection对象的Insert方法,函数原型:
func (c *Collection) Insert(docs ...interface{}) error
统一封装下getDB方法
package main import ( "fmt" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) // get mongodb db func getDB() *mgo.Database { session, err := mgo.Dial("172.16.27.134:10001") if err != nil { panic(err) } session.SetMode(mgo.Monotonic, true) db := session.DB("test") return db }
插入单条数据
func insert() { db := getDB() c := db.C("user") type User struct { Name string "bson:`name`" Age int "bson:`age`" } err := c.Insert(&User{Name: "Tom", Age: 20}) if err != nil { panic(err) } fmt.Println(err) }
一次插入多条记录
func insertMuti() { db := getDB() c := db.C("user") type User struct { Name string "bson:`name`" Age int "bson:`age`" } err := c.Insert(&User{Name: "Tom", Age: 20}, &User{Name: "Anny", Age: 28}) if err != nil { panic(err) } fmt.Println(err) }
插入数组格式数据
func insertArray() { db := getDB() c := db.C("user") type User struct { Name string "bson:`name`" Age int "bson:`age`" Groups []string "bson:`groups`" } err := c.Insert(&User{ Name: "Tom", Age: 20, Groups: []string{"news", "sports"}, }) if err != nil { panic(err) } fmt.Println(err) }
插入嵌套数据
func insertNesting() { db := getDB() c := db.C("user") type Toy struct { Name string "bson:`name`" } type User struct { Name string "bson:`name`" Age int "bson:`age`" Toys []Toy } err := c.Insert(&User{ Name: "Tom", Age: 20, Toys: []Toy{Toy{Name: "dog"}}, }) if err != nil { panic(err) } fmt.Println(err) }
插入map格式的数据
func insertMap() { db := getDB() c := db.C("user") user := map[string]interface{}{ "name": "Tom", "age": 20, "groups": []string{"news", "sports"}, "toys": []map[string]interface{}{ map[string]interface{}{ "name": "dog", }, }, } err := c.Insert(&user) if err != nil { panic(err) } fmt.Println(err) }
插入关联其它集合ObjectId的数据
要使用bson.ObjectIdHex函数对字符串进行转化,bson.ObjectIdHex函数原型
func ObjectIdHex(s string) ObjectId
func insertObjectId() { db := getDB() c := db.C("user") user := map[string]interface{}{ "name": "Tom", "age": 20, "group_id": bson.ObjectIdHex("540046baae59489413bd7759"), } err := c.Insert(&user) if err != nil { panic(err) } fmt.Println(err) }
转载请注明:快乐编程 » golang mongodb插入insert数据demo