最近在使用GO语言操作MongoDB的时候发现挺多操作很麻烦
由于判断时间戳或者数值在两个数范围内这个查询很常见,然而mgo实现between查询的资料又很少,所以做一下记录
-
mgo的安装:
go get gopkg.in/mgo.v2
-
获取时间戳在上一小时内的记录
//其他代码太多,只给出主要代码
func main(){
var result []dataStruct
lastHourStart := LastHourStartTimestamp()
lastHourEnd := LastHourEndTimestamp()
//关键就是bson.M{"timestamp": bson.M{"$lte": lastHourEnd, "$gte": lastHourStart}}
err := c.Find(bson.M{"timestamp": bson.M{"$lte": lastHourEnd, "$gte": lastHourStart}}).All(&result)
CheckErr(err)
fmt.Println(result[0], "\r\n")
fmt.Println(result[1], "\r\n")
}
//这个函数获取的是当前的整点时间戳
func LastHourEndTimestamp() int64 {
now := time.Now()
timestamp := now.Unix() - int64(now.Second()) - int64((60 * now.Minute()))
return timestamp
}
//这个函数获取的是上一小时整点时间戳
func LastHourStartTimestamp() int64 {
now := time.Now()
timestamp := now.Unix() - int64(now.Second()) - int64((60 * now.Minute())) - 3600
return timestamp
}
func CheckErr(err error) {
if err != nil {
panic(err)
}
}