mgo

非常好用的mongodb的数据库驱动,golang语言编写,非常适合集成到项目中进行mongodb的操作。

使用方法

  • 引入第三方包
import (
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
     "fmt"
)
  • 定义数据集合结构
type Movie struct {
    ID           bson.ObjectId `bson:"_id"`
    Name         string        `bson:"name"`
}
  • 创建数据库连接
url := fmt.Sprintf("mongodb://%v:%v@%v:%v/?authSource=admin", "root", "root, "127.0.0.1", 27017)
session, err := mgo.Dial(url)
session.SetMode(mgo.Monotonic, true)
  • 查询数据
collection := session.DB("movie").C("c_movie")// movie数据库名,c_movie集合名
var group []Movie
err : = c.Find(nil).All(&group)
  • 随机获取一条数据

s, c := session.DB("movie").C("c_movie")
defer s.Close()

pipeline := []bson.M{
    bson.M{"$sample": bson.M{"size": 1}},
}

 := c.Pipe(pipeline)

iter := pipe.Iter()

for iter.Next(&a) {

}
//*a 就是随机的数据

-删除数据

s, c := session.DB("movie").C("c_movie")
defer s.Close()
c.Remove(bson.M{"_id": bson.ObjectIdHex("5f2283b27b046edc980d517d")})
  • 添加数据
s, c := session.DB("movie").C("c_movie")
defer s.Close()
a  = {"ID":bson.NewObjectId(),"Name":"梦回故里"}
c.Insert(&a)
  • 更新数据
s, c := session.DB("movie").C("c_movie")
defer s.Close()
a  = bson.M{"ID":bson.NewObjectId(),"Name":"梦回故里"}
c.Update(bson.M{"_id": a.ID}, a)