You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

72 lines
1.4 KiB

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
mgo "gopkg.in/mgo.v2"
)
//MongoConfig stores the configuration of mongodb to connect
type MongoConfig struct {
Ip string `json:"ip"`
Database string `json:"database"`
Collection string `json:"collection"`
}
var mongoConfig MongoConfig
func readMongodbConfig(path string) {
file, e := ioutil.ReadFile(path)
if e != nil {
fmt.Println("error:", e)
}
content := string(file)
json.Unmarshal([]byte(content), &mongoConfig)
}
func getSession() (*mgo.Session, error) {
session, err := mgo.Dial("mongodb://" + mongoConfig.Ip)
if err != nil {
panic(err)
}
//defer session.Close()
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
return session, err
}
func getCollection(session *mgo.Session) *mgo.Collection {
c := session.DB(mongoConfig.Database).C(mongoConfig.Collection)
return c
}
func connectMongodb() *mgo.Collection {
session, err := getSession()
if err != nil {
log.Fatal(err)
}
c := getCollection(session)
return c
}
func saveDataEntryToMongo(c *mgo.Collection, user UserModel) {
/*
how to call this function
var auxArr []string
user := UserModel{"123", auxArr}
saveDataEntryToMongo(c, user)
*/
err := c.Insert(user)
if err != nil {
log.Fatal(err)
}
}