查找 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 main
import (
\"gopkg.in/mgo.v2\"
\"log\"
\"gopkg.in/mgo.v2/bson\"
)
type User struct {
Id bson. Id `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.New Id(),
Name: \"JK_CHENG\",
PassWord: \"123132\",
Age: 2,
}, &User{
Id: bson.New Id(),
Name: \"JK_WEI\",
PassWord: \"qwer\",
Age: 5,
}, &User{
Id: bson.New Id(),
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\"})//删除
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
继续阅读与本文标签相同的文章
下一篇 :
Java实现的zip工具类完整实例
-
ansible--user和group模块用户创建及删除
2026-05-19栏目: 教程
-
汇编(一) 汇编语言CPU、存储器、指令等概念
2026-05-19栏目: 教程
-
Github开源项目:Tamboot Cloud Admin一个基于spring cloud的微服务脚手架项目
2026-05-19栏目: 教程
-
Docker容器实战(三) - Docker的自我重新定位
2026-05-19栏目: 教程
-
阿里云注册域名使用教程
2026-05-19栏目: 教程
