mongodb BSON的基本使用教程
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,查找 Findm := bson.M{ "create_time": bson.M{ "$gte": start, "$lte": end, }, "accoun
千家信息网最后更新 2026年11月01日mongodb BSON的基本使用教程
查找 Find
m := bson.M{ "create_time": bson.M{ "$gte": start, "$lte": end, }, "account": account, "tag": "tag", } session.DB("db").C("collect").Find(m).Count()这里查找时间戳内,账号为account,标签为tag的数据并统计个数。
聚合管道在mgo中为Pipe(pipeline interface{})
这个和bash中使用的管道很像,数据可以被层层处理。一般传入的参数为[]bson.M。这个[]bson.M里如果还有嵌套则还要使用[]bson.M
- 比如这里首先匹配标签和账号
- 时间戳在一段时间内
- 然后根据名字分组统计数量
- 最后排序取最前面的三个。
//这个就可以传入Pipe m := []bson.M{ {"$match": bson.M{"tag": "tag", "account": account, "create_time": bson.M{"$gte": start, "$lte": end}}}, {"$group": bson.M{"_id": "$TagName", "count": bson.M{"$sum": 1}}}, {"$sort": bson.M{"count": -1}}, {"$limit": 3}, } //这里就可以取到输出的数据 var values []result session.DB("db").C("collect").Pipe(m).All(&values)简单介绍
package mainimport ( "gopkg.in/mgo.v2" "log" "gopkg.in/mgo.v2/bson")type User struct { Id bson.ObjectId `bson:"_id"` Name string `bson:"name"` PassWord string `bson:"pass_word"` Age int `bson:"age"`}func main() { db, err := mgo.Dial("mongodb://192.168.2.28:27017,192.168.2.28:27018,192.168.2.28:27019/?replicaSet=howie") if err != nil { log.Fatalln(err) } defer db.Close() db.SetMode(mgo.Monotonic, true) c := db.DB("howie").C("person") //插入 /*c.Insert(&User{ Id: bson.NewObjectId(), Name: "JK_CHENG", PassWord: "123132", Age: 2, }, &User{ Id: bson.NewObjectId(), Name: "JK_WEI", PassWord: "qwer", Age: 5, }, &User{ Id: bson.NewObjectId(), Name: "JK_HE", PassWord: "6666", Age: 7, })*/ var users []User c.Find(nil).All(&users) //查询全部数据 log.Println(users) c.FindId(users[0].Id).All(&users) //通过ID查询 log.Println(users) c.Find(bson.M{"name": "JK_WEI"}).All(&users) //单条件查询(=) log.Println(users) c.Find(bson.M{"name": bson.M{"$ne": "JK_WEI"}}).All(&users) //单条件查询(!=) log.Println(users) c.Find(bson.M{"age": bson.M{"$gt": 5}}).All(&users) //单条件查询(>) log.Println(users) c.Find(bson.M{"age": bson.M{"$gte": 5}}).All(&users) //单条件查询(>=) log.Println(users) c.Find(bson.M{"age": bson.M{"$lt": 5}}).All(&users) //单条件查询(<) log.Println(users) c.Find(bson.M{"age": bson.M{"$lte": 5}}).All(&users) //单条件查询(<=) log.Println(users) /*c.Find(bson.M{"name": bson.M{"$in": []string{"JK_WEI", "JK_HE"}}}).All(&users) //单条件查询(in) log.Println(users) c.Find(bson.M{"$or": []bson.M{bson.M{"name": "JK_WEI"}, bson.M{"age": 7}}}).All(&users) //多条件查询(or) log.Println(users) c.Update(bson.M{"_id": users[0].Id}, bson.M{"$set": bson.M{"name": "JK_HOWIE", "age": 61}}) //修改字段的值($set) c.FindId(users[0].Id).All(&users) log.Println(users) c.Find(bson.M{"name": "JK_CHENG", "age": 66}).All(&users) //多条件查询(and) log.Println(users) c.Update(bson.M{"_id": users[0].Id}, bson.M{"$inc": bson.M{"age": -6,}}) //字段增加值($inc) c.FindId(users[0].Id).All(&users) log.Println(users)*/ //c.Update(bson.M{"_id": users[0].Id}, bson.M{"$push": bson.M{"interests": "PHP"}}) //从数组中增加一个元素($push) c.Update(bson.M{"_id": users[0].Id}, bson.M{"$pull": bson.M{"interests": "PHP"}}) //从数组中删除一个元素($pull) c.FindId(users[0].Id).All(&users) log.Println(users) c.Remove(bson.M{"name": "JK_CHENG"})//删除}总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
查询
条件
数据
时间
元素
内容
字段
数组
标签
管道
账号
学习
统计
三个
个数
价值
参数
名字
增加值
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云信互联网科技有限公司
互联网科技有限公司经营范围
厦门中拓互联网络科技有限公司
中资互联网科技
深圳互联网科技公司
未来的互联网科技
易通互联网络科技有限公司
沃里互联网科技
长亮科技互联网金融
互联网科技英文翻译
恒银科技与互联网金融
佳云科技和互联网广告
互联网公司科技股
2021互联网科技公司排名
启辰互联网科技
广州百诚互联网科技有限公司官网
工业互联网科技创业
互联网科技手机排行榜
数字互联网科技有限公司
承德科技产业互联网平台
手冲咖啡和咖啡机区别
互联网科技巨头监管
互联网品科技
互联网科技公司官网
科技与互联网的利与弊
小米互联网科技园入驻
深圳互联网科技的发展
上海互联网科技公司ppt
全球科技与互联网公司市值变化
颐高云石互联网科技