golang使用 mongo
2016-01-04 17:32
351 查看
连接集群
GlobalMgoSession, err := mgo.Dial("mongodb://username:pwd@host1:port,host2:port")
如果不需要auth,则可以是
GlobalMgoSession, err := mgo.Dial("host1:port,host2:port")
生成objectid
golang 使用 mongo gte lte 功能
不能直接写 [/code]
基础小工具
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
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做不了有的时候还是不大方便。用父类做方法参数,传递子类则会编译失败,无法做通用类
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)
不能直接写 [/code]
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做不了有的时候还是不大方便。用父类做方法参数,传递子类则会编译失败,无法做通用类
相关文章推荐
- Google搜索市场份额跌至64%:捆绑销售依然是流量大头
- 详解WordPress中分类函数wp_list_categories的使用
- go语言学习笔记
- Google Map开发系列(二)——使用谷歌地图API之前应该有所了解的一些技术外背景
- google离线地图制作
- Google Map开发系列(一)——谷歌地图API密钥(API Key)的解读和使用技巧
- RK3288改开机logo问题
- LZW Data Compression Algorithm
- 谷歌的网页排序算法(PageRank Algorithm)
- MIT Introduction to Algorithms 学习笔记(七)
- CF Good Bye 2015 E. New Year and Three Musketeers(贪心+枚举)
- GO语言可以直接输出数组
- 迪士尼黑科技:爬墙机器人 VertiGo
- Genymotion模拟器无法开启的解决方法——Unable to start the virtual device,The virtual device got no IP address
- 详解WordPress中分类函数wp_list_categories的使用
- 在WordPress中加入Google搜索功能的简单步骤讲解
- 让Samba支持软连接
- Django如何搭建服务器
- Django ORM 中的批量操作
- Google是不是真的不能用了?非常奇怪的问题