欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mongodb BSON的基本使用教程

程序员文章站 2022-06-03 15:28:37
查找 find m := bson.m{ "create_time": bson.m{ "$gte": start, "...

查找 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.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"})//删除
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

相关标签: mongodb 使用