golang连接mongodb数据库

次序 · · 1892 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  1. 方法1

//-----------------c1.go-------------------

package conf

import (
    "gopkg.in/mgo.v2"
    "fmt"
)

func Ccdb2() (*mgo.Database, *mgo.Session)  {

    mgo_url := "mongodb://t1:t1@localhost:27017/test?authMechanism=SCRAM-SHA-1"

    session, err := mgo.Dial(mgo_url)

    session.SetMode(mgo.Monotonic, true)

    db := session.DB("test") //数据库名称
    
    if err != nil {
        fmt.Println("------连接数据库失败------------")
        panic(err)
    }
    fmt.Println("------ConnectionDb-----2-------")
    return db, session
}
func ColoseDb() {
    _, session := ConnectionDb()
    defer session.Close()
}
func PersonDocument() *mgo.Collection {
    db, _ := Ccdb2()
    conn := db.C("person")
    return conn
}


//-----------------c2.go-------------------


//查询出一个集合
func GetPeople(w http.ResponseWriter, req *http.Request) {
    fmt.Println("\n------------查询出一个集合--------------")

    var person []documents.Person
    
    //conf.PersonDocument().Find(bson.M{"name": "aa"}).All(&person)
    conf.PersonDocument().Find(nil).All(&person)

    for _, value := range person {
        fmt.Println(value.Name)
    }
    conf.ColoseDb()//关闭数据库

    json.NewEncoder(w).Encode(person)
}
  1. 方法2

//-----------------c1.go-------------------

package conf

import (
    "gopkg.in/mgo.v2"
    "fmt"
)

func Ccdb2() (*mgo.Database, *mgo.Session)  {

    mgo_url := "mongodb://t1:t1@localhost:27017/test" // 可以代替下面两步


    session, err := mgo.Dial(mgo_url)

    session.SetMode(mgo.Monotonic, true)

    db := session.DB("test") //数据库名称
    
    if err != nil {
        fmt.Println("------连接数据库失败------------")
        panic(err)
    }
    fmt.Println("------ConnectionDb-----2-------")
    return db, session
}
func ColoseDb() {
    _, session := ConnectionDb()
    defer session.Close()
}
func PersonDocument() *mgo.Collection {
    db, _ := Ccdb2()
    conn := db.C("person")
    return conn
}

//-----------------c2.go-------------------


//查询出一个集合
func GetPeople(w http.ResponseWriter, req *http.Request) {
    fmt.Println("\n------------查询出一个集合--------------")

    var person []documents.Person
    
    //conf.PersonDocument().Find(bson.M{"name": "aa"}).All(&person)
    conf.PersonDocument().Find(nil).All(&person)

    for _, value := range person {
        fmt.Println(value.Name)
    }
    conf.ColoseDb()//关闭数据库

    json.NewEncoder(w).Encode(person)
}
  1. 方法3

//-----------------c1.go-------------------

package conf

import (
    "gopkg.in/mgo.v2"
    "fmt"
)

func Ccdb2() (*mgo.Database, *mgo.Session)  {

    mgo_url := "localhost:27017"//登录地址 第一步

    session, err := mgo.Dial(mgo_url)

    session.SetMode(mgo.Monotonic, true)

    err = session.DB("test").Login("t1", "t1")//登录 认证 第二步
    if err != nil {
        panic(err)
    }

    db := session.DB("test") //数据库名称
    
    if err != nil {
        fmt.Println("------连接数据库失败------------")
        panic(err)
    }
    fmt.Println("------ConnectionDb-----2-------")
    return db, session
}
func ColoseDb() {
    _, session := ConnectionDb()
    defer session.Close()
}
func PersonDocument() *mgo.Collection {
    db, _ := Ccdb2()
    conn := db.C("person")
    return conn
}

//-----------------c2.go-------------------


//查询出一个集合
func GetPeople(w http.ResponseWriter, req *http.Request) {
    fmt.Println("\n------------查询出一个集合--------------")

    var person []documents.Person
    
    //conf.PersonDocument().Find(bson.M{"name": "aa"}).All(&person)
    conf.PersonDocument().Find(nil).All(&person)

    for _, value := range person {
        fmt.Println(value.Name)
    }
    conf.ColoseDb()//关闭数据库

    json.NewEncoder(w).Encode(person)
}
  1. 方法4
//-----------------c1.go-------------------

func PersonDocument() *mgo.Collection {
    dail_info := &mgo.DialInfo{
        Addrs:  []string{"127.0.0.1"},
        Direct: false,
        Timeout: time.Second * 1,
        Database: "test",
        Source: "test",
        Username: "t1",
        Password: "t1",
        PoolLimit: 1024,
    }

    session, err := mgo.DialWithInfo(dail_info)
    if err != nil {
        fmt.Printf("mgo dail error[%s]\n", err.Error())

    }

    defer session.Close()

    // set mode
    session.SetMode(mgo.Monotonic, true)

    c := session.DB("test").C("person")
    return c
}


//-----------------c2.go-------------------


//查询出一个集合
func GetPeople(w http.ResponseWriter, req *http.Request) {
    fmt.Println("\n------------查询出一个集合--------------")

    var person []documents.Person
    
    //conf.PersonDocument().Find(bson.M{"name": "aa"}).All(&person)
    conf.PersonDocument().Find(nil).All(&person)

    for _, value := range person {
        fmt.Println(value.Name)
    }
    conf.ColoseDb()//关闭数据库

    json.NewEncoder(w).Encode(person)
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:次序

查看原文:golang连接mongodb数据库

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1892 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传