在用beego开发运维相关项目时,需要存储一些文档类型数据,此时用mysql没有mongodb来的方便;
代码记录如下
type DeploymentText struct {
Title string
DateTime string
Content string
DeploymentStep []string
SqlDbname []SqlPlan
}
type SqlPlan map[string][]string
mongodb插入文档代码如下;
func (c *OpsController) AddDeploymentItem() {
onlineTitle := c.GetString("onlineTitle")
onlineContent := c.GetString("onlineContent")
onlineItems := strings.Split(c.GetString("onlineItems"),",")
onlineDbname := c.GetString("onlineDbname")
var onlineSqlStatement []string
tmpsqlslice := strings.Split(c.GetString("onlineSqlStatement"),";")
for _,tmpsql := range tmpsqlslice {
if strings.TrimSpace(tmpsql) != "" {
onlineSqlStatement = append(onlineSqlStatement,strings.TrimSpace(tmpsql))
}
}
mongoServer := beego.AppConfig.String("mongodb_endpoint")
mongoSession,err := mgo.Dial(mongoServer)
if err != nil {
panic(err)
}
defer mongoSession.Close()
mongoSession.SetMode(mgo.Monotonic, true)
var sqlstatement SqlPlan
if len(onlineSqlStatement) < 1 {
} else {
sqlstatement = SqlPlan{onlineDbname:onlineSqlStatement}
}
var job DeploymentText
if sqlstatement == nil {
job = DeploymentText{
Title: onlineTitle,
DateTime: time.Now().Format("2006-01-02 15:04"),
Content: onlineContent,
DeploymentStep: onlineItems,
}
} else {
job = DeploymentText{
Title: onlineTitle,
DateTime: time.Now().Format("2006-01-02 15:04"),
Content: onlineContent,
DeploymentStep: onlineItems,
SqlDbname: []SqlPlan{sqlstatement},
}
}
jobToMongodb := mongoSession.DB(beego.AppConfig.String("mongodb_db")).C(beego.AppConfig.String("mongodb_table"))
err = jobToMongodb.Insert(&job)
if err != nil {
//log.Fatal(err)
}
result := struct {
Status string
}{"ok"}
c.Data["json"] = &result
c.ServeJSON()
}
mongodb读取数据
func (c *OpsController) GetItemPlan() {
jobtime := c.GetString("lastjobtime")
mongoServer := beego.AppConfig.String("mongodb_endpoint")
mongoSession,err := mgo.Dial(mongoServer)
if err != nil {
panic(err)
}
defer mongoSession.Close()
mongoSession.SetMode(mgo.Monotonic, true)
getJobFromMongodb := mongoSession.DB(beego.AppConfig.String("mongodb_db")).C(beego.AppConfig.String("mongodb_table"))
result := DeploymentText{}
err = getJobFromMongodb.Find(bson.M{"datetime":jobtime}).One(&result)
if err != nil {
//log.Fatal(err)
}
c.Data["json"] = &result
c.ServeJSON()
}
前端页面数据展示如下:
![](https://img.haomeiwen.com/i11225916/5874726c958b3428.png)
![](https://img.haomeiwen.com/i11225916/8e6a8890c34ecfd2.png)
网友评论