文档章节

golang学习之mgo操作mongodb

c
 caiyezi
发布于 2016/11/08 20:24
字数 285
阅读 80
收藏 0

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()
}

 

本文转载自:http://www.cnblogs.com/vipzhou/p/5654781.html

共有 人打赏支持
上一篇: struts2随笔
c
粉丝 1
博文 108
码字总数 0
作品 0
西安
程序员
私信 提问
【翻译】使用Golang+MongoDB构建微服务

原创文章,转载请注明: 转载自勤奋的小青蛙 本文链接地址: 【翻译】使用Golang+MongoDB构建微服务 翻译来源:http://goinbigdata.com/how-to-build-microservice-with-mongodb-in-golang/ ...

mickelfeng
2018/02/08
0
0
golang 的mongodb驱动mgo如何执行原生的mongodb语句,类似直接执行sql语句那样子?

golang 的mongodb驱动mgo如何执行原生的mongodb语句,类似直接执行sql语句那样子? 知道的能给个例子最好了,谢谢

Robin3D
2013/07/23
1K
2
golang操作mongodb

1、要安装mongodb数据库,2、要下载golang的mgo包,3、连接操作 package main import ("gopkg.in/mgo.v2""gopkg.in/mgo.v2/bson" "fmt") const URL = "192.168.1.83:27017" //mongodb的地址 ......

别人说我名字很长
2015/07/30
0
0
关于golang mgo用户提交注入风险

我在网上找了一下,关于mongodb确实存在注入风险。 但在golang中mgo,如果没有对用户提交数据进行有效过滤,仅使用mgo的bson.M查询,是否也会出现被注入的风险? 如果存在注入风险,是如何实...

fotomxq
2016/12/19
297
1
【golang操作mongoDB】mgo中如何使用游标?

MongoDB中是有游标这一概念的。可我在mgo中没有找到相应的方法。 按道理说mgo中应该也提供游标操作的吧?

神州浪子
2014/10/08
450
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring Batch @SpringBatchTest 注解

Spring Batch 提供了一些非常有用的工具类(例如 JobLauncherTestUtils 和 JobRepositoryTestUtils)和测试执行监听器(StepScopeTestExecutionListener 和 JobScopeTestExecutionListener)......

honeymose
14分钟前
0
0
浏览器缓存

HTTP缓存类型 200 from cache:直接从本地缓存获取响应,可细分为from disk cache, from memory cache 304 Not Modified:协商缓存,本地未命中发送校验数据到服务端,如果服务端数据没有改变,则读...

关元
27分钟前
0
0
正则表达式简单使用说明

在Python3里确实简单明了,测试样例如下 # 正则content = 'Hello 1234567 World_This is a Regex Demo'# 贪婪匹配 尽可能多的匹配result = re.match('^He.*(\d+).*Demo$', co......

轻轻的往前走
28分钟前
0
0
多线程创建方式

一、基本概念 进程:就是正在运行的应用程序,进程是线程的集合。 线程:就是进程中的一条执行路径,一个独立的执行单元。 多线程:就是为了提高程序的效率,使用多线程,每个线程互不影响,...

秋至丶枫以落
32分钟前
0
0
聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部