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)
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值