mongo 一些简单的使用示例
2019-04-15 本文已影响0人
SailSea
使用前需要下载gopkg.in/mgo.v2 包 执行
go get gopkg.in/mgo.v2
示例代码
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"time"
)
//mongo配置信息先放在常量中
const (
MGO_HOSTS = "127.0.0.1:27017"
Source = "sunsea"
Username = "sunsea"
Password = "sunseaiot"
)
var Mgo *mgo.Session
func init() {
timeout := 60 * time.Second
dialInfo := &mgo.DialInfo{
Addrs: []string{MGO_HOSTS}, //数据库地址 dbhost: 127.0.0.1:27017
Timeout: timeout, // 连接超时时间 timeout: 60 * time.Second
Source: "sunsea", // 设置权限的数据库 authdb: sunsea
Username: "sunsea", // 设置的用户名 authuser: sunsea
Password: "sunseaiot", // 设置的密码 authpass: sunseaiot
PoolLimit: 100, // 连接池的数量 poollimit: 100
}
var err error
Mgo, err = mgo.DialWithInfo(dialInfo)
if err != nil {
fmt.Println("[mgo][init][Error]", err)
//log.Fatal(err)
}
}
//例子
func main() {
c := Mgo.DB("sunsea").C("sunsea") //选择sunsea库的sunsea表
//增
if err := c.Insert(map[string]interface{}{"id": 7, "name": "lulu", "age": 25}); err != nil {
fmt.Println("Error", err)
return
}
//修改匹配的一条数据
err := c.Update(map[string]interface{}{"age": 25}, map[string]interface{}{"id": 8, "name": "aaaaa", "age": 30})
if err != nil {
fmt.Println("Error", err)
return
}
//查询服务条件的第一条数据
var one map[string]interface{}
err = c.Find(map[string]interface{}{"id": 8, "name": "aaaaa", "age": 30}).One(&one)
if err != nil {
fmt.Println("Error", err)
return
}
fmt.Println("one : ", one)
//查询服务条件的所有数据
var all []map[string]interface{}
err = c.Find(map[string]interface{}{"id": 8, "name": "aaaaa", "age": 30}).All(&all)
if err != nil {
fmt.Println("Error", err)
return
}
fmt.Println("all : ", all)
//查询表内所有数据
var result []map[string]interface{}
err = c.Find(nil).All(&result)
if err != nil {
fmt.Println("Error", err)
return
}
fmt.Println("result : ", result)
//删除匹配的所有数据
info, err := c.RemoveAll(map[string]interface{}{"id": 8, "name": "aaaaa", "age": 30})
if err != nil {
fmt.Println("Error", err)
return
}
fmt.Println(info)
}