登录
首页 >  Golang >  Go问答

查询最近30分钟内插入的MongoDB项目

来源:stackoverflow

时间:2024-03-11 08:54:25 461浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《查询最近30分钟内插入的MongoDB项目》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我想检查过去 30 分钟内是否使用 mongodb 在 golang 中添加了现有项目。

这是我的类型模型:

type paycoin struct {
    id            bson.objectid `json:"id" bson:"_id"`
    ownerid       bson.objectid `json:"owner_id" bson:"owner_id"`
    publickey     string        `json:"public_key" bson:"public_key"`
    privatekey    string        `json:"-" bson:"private_key"`
    qrcode        string        `json:"qrcode" bson:"-"`
    exchangerate  uint64        `json:"exchange_rate" bson:"exchange_rate"`
    depositamount float32       `json:"deposit_amount" bson:"deposit_amount"`
    received      uint64        `json:"received" bson:"received"`
    completed     bool          `json:"-" bson:"completed"`
    createdat     time.time     `json:"created_at" bson:"created_at"`
    updatedat     time.time     `json:"updated_at" bson:"updated_at"`
}

这是我当前的功能:

func (s *Storage) CoinPayExistOperation(ownerID bson.ObjectId) (*models.PayCoin, error) {
    collection := s.getCoinPay()
    var lt models.PayCoin
    timeFormat := "2006-01-02 15:04:05"
    now := time.Now()
    after := now.Add(-30*time.Minute)
    nowFormated := after.Format(timeFormat)


    err := collection.Find(bson.M{"owner_id": ownerID, "created_at": nowFormated}).One(<)
    return <, err
}

我想检查数据库中是否存在最近 30 分钟添加的项目,我当前的代码不返回任何项目,并且在数据库中存在。我怎样才能做到这一点?


解决方案


这里有两个小问题需要解决。

  • 如果您想获取各种记录,您应该将单词 one 更改为 all
  • 您正在执行一个过滤器,其中您的数据时间大于,为此,您必须使用比较查询运算符 $gt

这里是您的查询的示例

collection.Find(bson.M{"owner_id": OwnerID, "created_at": bson.M{"$gt": nowFormated}}).All(<)

注意:由于这将返回多条记录,请记住将 lt 更改为切片。

本篇关于《查询最近30分钟内插入的MongoDB项目》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>