当前位置: 首页 > news >正文

golang增删改查mongdb

package main

import (
	"gopkg.in/mgo.v2"
	"fmt"
	"gopkg.in/mgo.v2/bson"
)

type Operater struct {
	mogSession *mgo.Session
	dbname     string
	document   string
}

//集合的结构 其他中AGE NAME HEIGHT 名字的首字母必须大写,如果不无法访问到
type person struct {
	AGE    int
	NAME   string
	HEIGHT int
}

//连接数据库
func (operater *Operater) connect() error {
	mogsession, err := mgo.Dial("mongodb://127.0.0.1:27017")
	if err != nil {
		fmt.Println(err)
		return err
	}
	operater.mogSession = mogsession
	return nil
}

func (operater *Operater) insert(p *person) error {
	collcetion := operater.mogSession.DB(operater.dbname).C(operater.document)
	err := collcetion.Insert(p)
	return err
}





func main() {
	p:= person{
		3134,
		"周杰伦",
		175,
	}

	operater := Operater{dbname: "mongd", document: "test"}
	operater.connect()
	//operater.insert(p)
	err := operater.insert(&p)
	if err != nil {
		fmt.Println("插入出错", err)
	}else{
		fmt.Println("success!")
	}
	ps, _ := operater.query()
	for key, value := range ps {
		fmt.Println("---->",key,value)
	}
}


//更新一行
func (operater *Operater) update() (error) {
	collcetion := operater.mogSession.DB(operater.dbname).C(operater.document)
	update := person{
		33,
		"詹姆斯",
		201,
	}
	err := collcetion.Update(bson.M{"name": "周杰伦"}, update)
	if err != nil {
		fmt.Println(err)
	}
	return err
}

//统计集合中数据的个数
func (operater *Operater) query() ([]person,error) {
	collcetion:=operater.mogSession.DB(operater.dbname).C(operater.document)
	p:=new(person)
	p.AGE=33
	query:=collcetion.Find(nil)
	ps:=[]person{}
	query.All(&ps)
	iter:=collcetion.Find(nil).Iter()
	//单个查询
	result:=new(person)
	for iter.Next(&result) {
		fmt.Println("一个一个输出:", result)
	}
	return ps,nil
}

相关文章:

  • 配置java环境变量
  • 安装elasticsearch插件
  • elasticsearch通过ip进行访问配置
  • elasticsearch-head中cluster health: not connected
  • elasticsearch的常用命令
  • go语言中时空策略以空间换取时间
  • goland通过鼠标字体进行放大缩小
  • ubuntu使用git编译安装golang
  • grpc环境
  • golang的调度器原理
  • go垃圾回收机制
  • Go的调度数据结构
  • channel数据结构
  • Go语言中interface
  • 非阻塞io