当前位置: 移动技术网 > IT编程>数据库>MongoDB > mongodb BSON的基本使用教程

mongodb BSON的基本使用教程

2019年01月07日  | 移动技术网IT编程  | 我要评论

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

总结

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网