windows 下安装
在 windows 下安装可以参考这篇文章。
小坑
我使用的是 windows 10 企业版,在安装时出现了个问题,如下:
反正我是在网上找了大半天没有找到解决的办法,都是文章作者可用,但是我一直不生效,我觉得的必须要用管理员权限安装导致的。后来我直接 ignore了,用管理员权限运行其实也可以。
运行 mongodb 服务器
用管理员 power shell 运行
具体命令可以参看文档
.\mongod.exe --dbpath D:\mySoft\mongoDB\data\db
连接 mongodb
使用 globalsign/mgo 操作 mongodb
package main
import (
"fmt"
"time"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
type User struct {
Id bson.ObjectId `bson:"_id" json:"id"`
Username string `bson:"name" json:"username"`
Pass string `bson:"pass" json:"pass"`
Regtime int64 `bson:"regtime" json:"regtime"`
Interests []string `bson:"interests" json:"interests"`
}
const URL string = "127.0.0.1:27017"
var (
c *mgo.Collection
session *mgo.Session
)
func (user User) ToString() string {
return fmt.Sprintf("%#v", user)
}
func init() {
session, _ = mgo.Dial(URL)
// 切换到数据库
db := session.DB("blog")
// 切换到collection
c = db.C("mgotest")
}
// 新增数据
func add() {
// defer session.Close()
stu1 := new(User)
stu1.Id = bson.NewObjectId()
stu1.Username = "stu_name" + time.Now().String()
stu1.Pass = "stu1_pass"
stu1.Regtime = time.Now().Unix()
stu1.Interests = []string{"象棋", "游泳", "跑步"}
err := c.Insert(stu1)
if err == nil {
fmt.Println("insert success")
} else {
fmt.Printf("insert error:%s \n", err.Error())
}
}
// 查询
func find() {
// defer session.Close()
var (
users []User
err error
)
// c.Find(nil).All(&users)
err = c.Find(bson.M{"name": "stu_name"}).All(&users)
if err != nil {
fmt.Printf("find err:%s \n", err.Error())
return
}
for index, value := range users {
fmt.Printf("index:%d,val:%s \n", index, value.ToString())
}
// 根据ObjectId进行查询
// idStr := "577fb2d1cde67307e819133d"
// objectId := bson.ObjectIdHex(idStr)
// user := new(User)
// err = c.Find(bson.M{"_id": objectId}).One(user)
// if err != nil {
// fmt.Printf("db find err:%s \n", err.Error())
// return
// }
// fmt.Println("查找成功..", user)
}
// 根据id进行修改
func update() {
interests := []string{"象棋", "游泳", "跑步"}
err := c.Update(bson.M{"_id": bson.ObjectIdHex("6076c3954e947b3944d4a38b")}, bson.M{"$set": bson.M{
"name": "修改后的name",
"pass": "修改后的pass",
"regtime": time.Now().Unix(),
"interests": interests,
}})
if err != nil {
fmt.Println("修改失败")
} else {
fmt.Println("修改成功")
}
}
// 删除
func del() {
err := c.Remove(bson.M{"_id": bson.ObjectIdHex("6076c3954e947b3944d4a38b")})
if err != nil {
fmt.Println("删除失败" + err.Error())
} else {
fmt.Println("删除成功")
}
}
func main() {
add()
find()
update()
del()
}
库里的结果: