golang連線mongodb資料庫
摘要:
方法1
//-----------------c1.go-------------------
package conf
import (
"gopkg.in/mgo.v2"
"fmt"
)
func Ccdb2() (...
- 方法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) }
- 方法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) }
- 方法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) }
- 方法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) }