mgo使用
博客专区 > Upcyan 的博客 > 博客详情
mgo使用
Upcyan 发表于10个月前
mgo使用
  • 发表于 10个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

package main

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

// Json输出
func PrintJSON(data interface{}) {
	js, err := json.MarshalIndent(data, "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(js))
}

// 数据库连接
func mongodbConnection() (session *mgo.Session) {
	var err error
	session, err = mgo.Dial("127.0.0.1:27017")
	if err != nil {
		panic(err)
	}
	return
}

var (
	mongo = mongodbConnection()
	db    = mongo.DB("mydb")
)

// UserModel
type User struct {
	Id   bson.ObjectId `bson:"_id"`
	Uid  int
	Name string
}

func main() {
	u := &User{}
	//u.Segmented(5)
	u.GetId("597b022222a61a10539e2666")
}

// Id查询 bson.ObjectIdHex(id)
func (User) GetId(id string) {
	u, user := db.C("user"), &User{}
	if err := u.Find(bson.M{"_id": bson.ObjectIdHex(id)}).One(user); err != nil {
		panic(err)
	}
	PrintJSON(user)
}

// 删除 Remove()
func (User) RemoveData() {
	u := db.C("user")
	if err := u.Remove(bson.M{"name": "用户24"}); err != nil {
		panic(err)
	}
}

// 更新 Update()
func (User) UpdateData() {
	u := db.C("user")
	// 1.修改字段的值($set)
	if err := u.Update(bson.M{"name": "用户21"}, bson.M{"$set": bson.M{
		"name": "小仙女",
	}}); err != nil {
		panic(err)
	}

	// 字段增加值($inc)
	//u.Update(bson.M{"name": "小仙女"}, bson.M{"inc": bson.M{"age": 22, }})
	// 从数组中增加一个元素($push)
	//u.Update(bson.M{"name": "小仙女"}, bson.M{"$push": bson.M{"interests": "Golang", }})
	// 从数组中删除一个元素($pull)
	//u.Update(bson.M{"name": "小仙女"}, bson.M{"$push": bson.M{"interests": "Golang", }})
}

// 分段查询
func (User) Segmented(page int) {
	u, users, piece := db.C("user"), make([]User, 0), 5
	if err := u.Find(nil).All(&users); err != nil {
		panic(err)
	}
	user := users[page*piece-piece:page*piece]
	PrintJSON(user)
}

// 条件查找
func (User) FindData() {
	u, users := db.C("user"), make([]User, 0)
	/* 满足条件    */ u.Find(bson.M{"name": "用户7"}).All(&users)
	/* 满足多个条件 */ u.Find(bson.M{"name": "用户2", "uid": 2}).All(&users)

	/* != $ne  */ u.Find(bson.M{"name": bson.M{"$ne": "用户1"}}).All(&users)
	/* <  $lt  */ u.Find(bson.M{"uid": bson.M{"$lt": 5}}).All(&users)
	/* <= $lte */ u.Find(bson.M{"uid": bson.M{"$lte": 5}}).All(&users)
	/* >  $gt  */ u.Find(bson.M{"uid": bson.M{"$gt": 5}}).All(&users)
	/* >= $gte */ u.Find(bson.M{"uid": bson.M{"$gte": 5}}).All(&users)

	// $in 查询多条匹配数据
	u.Find(bson.M{"name": bson.M{"$in": []string{"小仙女", "用户6"}}}).All(&users)
	// $or
	u.Find(bson.M{"$or": []bson.M{bson.M{"name": "用户3"}, bson.M{"name": "用户2"}}}).All(&users)
	// 获取所有数据
	u.Find(nil).All(&users)

	PrintJSON(users)
}

// 插入数据 Insert()
func (User) InsertUser() {
	u := db.C("user")
	for i := 1; i <= 1000; i++ {
		if err := u.Insert(&User{
			Id:   bson.NewObjectId(),
			Uid:  i,
			Name: "用户" + strconv.Itoa(i),
		});
			err != nil {
			panic(err)
		}
	}
}

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 25
码字总数 12134
×
Upcyan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: