golang使用 mongo

shenguanpu · · 3336 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 

生成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)

 

基础小工具

 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))

}

  1. 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.  
  2. 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做不了有的时候还是不大方便。用父类做方法参数,传递子类则会编译失败,无法做通用类


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:shenguanpu

查看原文:golang使用 mongo

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

3336 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传