zoukankan      html  css  js  c++  java
  • golang学习之mgo操作mongodb

    mgo是mongodb的golang驱动,测试代码:

    // mgotest project main.go
    package main
    
    import (
        "fmt"
        "time"
    
        "gopkg.in/mgo.v2"
        "gopkg.in/mgo.v2/bson"
    )
    
    type User struct {
        Id        bson.ObjectId `bson:"_id"`
        Username  string        `bson:"name"`
        Pass      string        `bson:"pass"`
        Regtime   int64         `bson:"regtime"`
        Interests []string      `bson:"interests"`
    }
    
    const URL String = "127.0.0.1:27017"
    
    var c *mgo.Collection
    var session *mgo.Session
    
    func (user User) ToString() string {
        return fmt.Sprintf("%#v", user)
    }
    
    func init() {
        session, _ = mgo.Dial(URL)
        //切换到数据库
        db := session.DB("blog")
        //切换到collection
        c = db.C("mgotest")
    }
    
    //新增数据
    func add() {
        //    defer session.Close()
        stu1 := new(User)
        stu1.Id = bson.NewObjectId()
        stu1.Username = "stu1_name"
        stu1.Pass = "stu1_pass"
        stu1.Regtime = time.Now().Unix()
        stu1.Interests = []string{"象棋", "游泳", "跑步"}
        err := c.Insert(stu1)
        if err == nil {
            fmt.Println("插入成功")
        } else {
            fmt.Println(err.Error())
            defer panic(err)
        }
    }
    
    //查询
    func find() {
        //    defer session.Close()
        var users []User
        //    c.Find(nil).All(&users)
        c.Find(bson.M{"name": "stu1_name"}).All(&users)
        for _, value := range users {
            fmt.Println(value.ToString())
        }
        //根据ObjectId进行查询
        idStr := "577fb2d1cde67307e819133d"
        objectId := bson.ObjectIdHex(idStr)
        user := new(User)
        c.Find(bson.M{"_id": objectId}).One(user)
        fmt.Println(user)
    }
    
    //根据id进行修改
    func update() {
        interests := []string{"象棋", "游泳", "跑步"}
        err := c.Update(bson.M{"_id": bson.ObjectIdHex("577fb2d1cde67307e819133d")}, bson.M{"$set": bson.M{
            "name":      "修改后的name",
            "pass":      "修改后的pass",
            "regtime":   time.Now().Unix(),
            "interests": interests,
        }})
        if err != nil {
            fmt.Println("修改失败")
        } else {
            fmt.Println("修改成功")
        }
    }
    
    //删除
    func del() {
        err := c.Remove(bson.M{"_id": bson.ObjectIdHex("577fb2d1cde67307e819133d")})
        if err != nil {
            fmt.Println("删除失败" + err.Error())
        } else {
            fmt.Println("删除成功")
        }
    }
    func main() {
        add()
        find()
        update()
        del()
    }
  • 相关阅读:
    ibatis项目启动报错The string "--" is not permitted within comments【原】
    excel vlookup简易样例【原】
    用itext合并多个pdf文件【转】【补】
    springboot 自定义starter之AutoConfiguration【原】
    springboot 启动配置原理【转】【补】
    springboot 数据访问【转】【补】
    springboot thymeleaf【转】【补】
    包名的命名方式
    servlet中doget和dopost方法的区别
    DBUtils使用详细示例
  • 原文地址:https://www.cnblogs.com/vipzhou/p/5654781.html
Copyright © 2011-2022 走看看