golang中MongoDB的between查询

由于判断时间戳或者数值在两个数范围内这个查询很常见,然而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)
	}
}
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页