最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

golang mongodb插入insert数据demo

Golang 1112浏览 0评论

使用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

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址