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"})//删除 }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: PHP基于递归算法解决兔子生兔子问题
推荐阅读
-
使用YCSB测试MongoDB的微分片性能
-
yii2使用ajax返回json的实现方法,yii2ajax返回json_PHP教程
-
php文章中图片处理的使用_PHP教程
-
PHP:使用PHPExcel完成电子表格文件的导出下载和导入操作_PHP教程
-
php同时使用session和cookie来保存用户登录信息的实现代码,sessioncookie_PHP教程
-
05-mysql的基本使用_MySQL
-
thinkphp3.0 模板中函数的使用_PHP教程
-
PHP非常简单的使用模板制作静态页面_PHP教程
-
PHP命名空间(namespace)的使用基础及示例,命名空间namespace_PHP教程
-
我是否应该使用mongodb?(即 mongodb 能比 mysql 更好的解决我面