(一) windows 10 下安装 mongodb 并 globalsign/mgo 包的简单使用

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()
}

库里的结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值