golang使用 mongo
连接集群
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
所以集群的话格式是
GlobalMgoSession, err := mgo.Dial("mongodb://username:pwd@host1:port,host2:port")
如果不需要auth,则可以是
GlobalMgoSession, err := mgo.Dial("host1:port,host2:port")
生成objectid
i := bson.NewObjectId()
c.Insert(bson.M{"_id": i, "foo": "bar"})
golang 使用 mongo gte lte 功能
searchErr = SearchReading(bson.M{"k": key, "t": bson.M{"$gte": start, "$lte": end}}, limit)
不能直接写
searchErr = SearchReading(bson.M{"k": key, "t":'{"$gte": start, "$lte": end}'}, limit)
基础小工具
go语言的int转换成string有3种方法
1、int32位,strconv.Itoa
2、大于32位,strconv.FormatInt(int,进制(10))
3、万恶的fmt.Sprintf.
golang md5 计算
func genQueryMd5(str string) string {
hash := md5.New()
b := []byte(str)
hash.Write(b)
hash.Sum(nil)
return fmt.Sprintf("%x", md5.Sum(b))
}
- When you call Sum(nil) it returns d.checkSum() directly as a byte slice, however if you call Sum([]byte) it appends d.checkSum() to your input.
- Write函数会把MD5对象内部的字符串clear掉,然后把其参数作为新的内部字符串。而Sum函数则是先计算出内部字符串的MD5值,而后把输入参数附加到内部字符串后面。即可以为认为:hash.Write(b) + hash.Sum(nil) = hash.Write(nil) + hash.Sum(b) + hash.Sum(nil) = md5.Sum(b)。
解析字符串为 int64
func ParseInt(s string, base int, bitSize int) (i int64, err error)
参数1 数字的字符串形式
参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制
参数3 返回结果的bit大小 也就是int8 int16 int32 int64
import
(
"strconv"
)
i, err := strconv.ParseInt("123", 10, 32)
时间戳互换
获取时间戳用time.Now().Unix(),格式化时间用t.Format,解析时间用time.Parse
timestamp := time.Now().Unix()
//格式化为字符串,tm为Time类型
tm := time.Unix(timestamp, 0)
fmt.Println(tm.Format("2006-01-02 03:04:05"))
//从字符串转为时间戳,第一个参数是格式,第二个是要转换的时间字符串
tm2, _ := time.Parse("01/02/2006", "02/08/2015")
golang byte 转string
golang里边 string的概念其实不是以前遇到/0结尾的概念了,他其实就是一块连续的内存,首地址+长度,上面那样赋值,如果p里边有/0,他不会做处理这个时候,如果再对这个string做其他处理就可能出问题了,比如strconv.Atoi转成int就有错误,解决办法就是需要自己写一个正规的转换函数:
func byteString(p []byte) string {
for i := 0; i < len(p); i++ {
if p[i] == 0 {
return string(p[0:i])
}
}
return string(p)
}
golang Polymorphism的支持。interface对多态的支持还是比较有限。down casting做不了有的时候还是不大方便。用父类做方法参数,传递子类则会编译失败,无法做通用类
golang使用 mongo的更多相关文章
- golang mgo的mongo连接池设置:必须手动加上maxPoolSize
本司礼物系统使用了golang的 mongo库 mgo,中间踩了一些坑,总结下避免大家再踩坑 golang的mgo库说明里是说明了开启连接复用的,但观察实验发现,这并没有根本实现连接的控制,连接复用仅 ...
- golang:mgo剖析之Session
golang操作mongo使用的包是"gopkg.in/mgo.v2",coding过程中需要并发读写mongo数据库,简单观摩了下源码,记录下自己的一些理解,如有错误,敬请斧正. ...
- 【Gin-API系列】配置文件和数据库操作(三)
我们前面已经实现了API的基础版本,能对参数校验和返回指定数据,这一章,我们将对主机和交换机进行建模,存入数据库. 考虑到数据库安装和使用的简便性,我们采用文档存储结构的MongoDB数据库. Mon ...
- Golang 中操作 Mongo Update 的方法
Golang 和 MongoDB 中的 ISODate 时间交互问题 2018年02月27日 11:28:43 独一无二的小个性 阅读数:357 标签: GolangMongoDB时间交互时间转换 更 ...
- Golang+Mongodb
Golang+Mongodb打造你的第一个站点 很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到 ...
- golang 之 bson 与 struct 转换
bson的介绍不说了golang下的解析包找到2个 一个是mongo的http://labix.org/gobson,另外一个比较小众https://github.com/sbunce/bson这里用 ...
- 图数据库cayley+mongo的起航之旅
图数据库,目前比较主流的可能是Neo4j以及cayley了.但是,由于Neo4j只有社区版是免费的,所以,选择cayley作为项目的最终选择! 今天就简单的介绍下,我的起航之旅. 1.安装go语言环境 ...
- 使用Golang+Mongodb打造你的第一个站点
很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到了js的嵌套回调的话你就会想换换别的办法了.虽然 ...
- mongo源码学习(三)请求接收传输层
在上一篇博客中(mongo源码学习(二)db.cpp之mongoDbMain方法分析),我们把db.cpp中的mongoDbMain的执行过程分析了一下,最后会调用initAndListen(serv ...
随机推荐
- Network Wars-ZOJ2676最小割+01规划
Time Limit: 5 Seconds Memory Limit: 32768 KB Special Judge Network of Byteland consists of n servers ...
- jQuery学习笔记(四)jQuery中的动画
目录 show()方法和hide()方法 fideIn()方法和fadeOut()方法 slideUp方法和slideDown()方法 自定义动画方法animate toogle(),slideTog ...
- Angular.js 的初步认识
MVC模式 模型(model)-视图(view)-控制器(controller) Angular.js采用了MVC设计模式的开源js框架 1.如何在angular.js建立自己的模块(model),控 ...
- sql-GOTO跳转
--声明变量 DECLARE @X INT --标记GOTO跳转位置 TEST: PRINT @X --WHILE @X<=3 --GOTO跳转到执行位置 GOTO TEST
- StringBuffer(线程安全)StringBuilder(非线程安全)
StringBuffer属于线程安全,相对为重量级 StringBuilder属于非线程安全,相对为轻量级 线程安全的概念: 网络编程中许多线程可能会同时运行一段代码.当每次运行结果和单独线程运行的结 ...
- js类型检测
1.typeof 或者 typeof() 适合基本类型及function检测,遇null失效 ex: typeof 100 返回值为 "number" typeof ...
- javascript的继承小结
继承是OO语言中最为津津乐道的概念,一般有两种继承方式,接口继承和实现继承,接口继承只继承方法签名,实现继承则是集成真正的方法.由于js中函数没有签名,因此ECMAScript中没有接口继承,只有实现 ...
- Ios二维码扫描(系统自带的二维码扫描)
Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...
- 关于MySQL中的三种日期类型
Mysql中我们经常用来存储日期的数据类型有三种:Date.Datetime.Timestamp. Date数据类型用来存储没有时间的日期.Mysql获取和显示这个类型的格式为"YYYY-M ...
- 参考__HTML5 Game
基础知识 TypeScript TypeScript 目录教程 Egret Egret II HTML5晃动DeviceMotionEvent事件 博客 html5tricks 库和框架 html5t ...