golang操作mongodb的方法

本文实例讲述了golang操作mongodb的方法。分享给大家供大家参考。具体实现方法如下:

代码如下:

package main
import (
    "fmt"
    "launchpad.net/mgo"
    "launchpad.net/mgo/bson"
)
type Mail struct {
    Id bson.ObjectId "_id"
    Name string
    Email string
}
func main() {
    // 连接数据库
    session, err := mgo.Dial("127.0.0.1")
    if err != nil {
        panic(err)
    }
    defer session.Close()
    // 获取数据库,获取集合
    c := session.DB("test").C("mail")
    // 存储数据
    m1 := Mail{bson.NewObjectId(), "user1", "user1@dotcoo.com"}
    m2 := Mail{bson.NewObjectId(), "user1", "user2@dotcoo.com"}
    m3 := Mail{bson.NewObjectId(), "user3", "user3@dotcoo.com"}
    m4 := Mail{bson.NewObjectId(), "user3", "user4@dotcoo.com"}
    err = c.Insert(&m1, &m2, &m3, &m4)
    if err != nil {
        panic(err)
    }
    // 读取数据
    ms := []Mail{}
    err = c.Find(&bson.M{"name":"user3"}).All(&ms)
    if err != nil {
        panic(err)
    }
    // 显示数据
    for i, m := range ms {
        fmt.Printf("%s, %d, %s\n", m.Id.Hex(), i, m.Email)
    }
}

希望本文所述对大家的Go语言程序设计有所帮助。

(0)

相关推荐

  • golang语言中for循环语句用法实例

    本文实例讲述了golang语言中for循环语句用法.分享给大家供大家参考.具体分析如下: for循环是用来遍历数组或数字的.用for循环遍历字符串时,也有 byte 和 rune 两种方式.第一种为byte,第二种rune. 复制代码 代码如下: package main import ( "fmt" ) func main() { s := "abc汉字" for i := 0; i < len(s); i++ { fmt.Printf("%c,&

  • Go语言如何并发超时处理详解

    实现原理: 并发一个函数,等待1s后向timeout写入数据,在select中如果1s之内有数据向其他channel写入则会顺利执行,如果没有,这是timeout写入了数据,则我们知道超时了. 实现代码: package main import "fmt" import "time" func main() { ch := make(chan int, 1) timeout := make(chan bool, 1) // 并发执行一个函数,等待1s后向timeou

  • Golang极简入门教程(一):基本概念

    安装 Golang 在 http://golang.org/dl/ 可以下载到 Golang.安装文档:http://golang.org/doc/install. Hello Go 我们先创建一个文件 hello.go: 复制代码 代码如下: package main   import "fmt"   func main() {     fmt.Printf("hello Golang\n"); } 执行此程序: 复制代码 代码如下: go run hello.g

  • Golang极简入门教程(三):并发支持

    Golang 运行时(runtime)管理了一种轻量级线程,被叫做 goroutine.创建数十万级的 goroutine 是没有问题的.范例: 复制代码 代码如下: package main   import (     "fmt"     "time" )   func say(s string) {     for i := 0; i < 5; i++ {         time.Sleep(100 * time.Millisecond)       

  • 在Golang中使用C语言代码实例

    cgo 使得在 Golang 中可以使用 C 代码. Hello World 为了有一个较为直观的了解,我们来看一个简单的例子,创建文件 main.go: 复制代码 代码如下: package main   /* #include <stdio.h>   void sayHi() {     printf("Hi"); } */ import "C"   func main() {     C.sayHi() } 执行程序: 复制代码 代码如下: go

  • Golang记录、计算函数执行耗时、运行时间的一个简单方法

    先写一个公共函数, 比如在 common 包下有这么一个方法: // 写超时警告日志 通用方法 func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) { dis := time.Now().Sub(start).Seconds() if dis > timeLimit { log.Warning(log.CENTER_COMMON_WARNING, tag, " detailed:&quo

  • 理解Golang中的数组(array)、切片(slice)和map

    我比较喜欢先给出代码,然后得出结论 数组 复制代码 代码如下: package main import (     "fmt" ) func main() {     arr := [...]int{1, 2, 3}     //打印初始的指针     fmt.Printf("the pointer is : %p \n", &arr)     printPointer(arr) } func printPointer(any interface{}) {

  • golang使用正则表达式解析网页

    废话少说,直接奉上代码: 复制代码 代码如下: package main import ( "fmt" "time" "io/ioutil" "net/http" "regexp" "strings" ) func main() {     ip_pool := []string{                 "172.16.1.128",            

  • Golang极简入门教程(四):编写第一个项目

    workspace Golang 的代码必须放置在一个 workspace 中.一个 workspace 是一个目录,此目录中包含几个子目录: 1.src 目录.包含源文件,源文件被组织为包(一个目录一个包) 2.pkg 目录.包含包对象(package objects) 3.bin 目录.包含可执行的命令 包源文件(package source)被编译为包对象(package object),命令源文件(command source)被编译为可执行命令(command executable).

  • Golang实现的聊天程序服务端和客户端代码分享

    实现逻辑 1.Golang 版本  1.3 2.实现原理: 1.主进程建立TCP监听服务,并且初始化一个变量 talkChan := make(map[int]chan string) 2.当主进程ACCEPT连接请求后,利用go 启动一个协程A去维持和客户端的连接,把taokChan带入到协程里 3.和客户端建立连接的协程A,发送消息给客户端,使其发送自己的用户信息. 4.协程A在收到客户端发送的用户信息后,建立一个此用户对应的管道 talkChan[uid] = make(chan stri

随机推荐