首页 > 解决方案 > mongodb 获取最近 30 分钟前插入的项目

问题描述

我想检查是否存在在过去 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(&lt)
    return &lt, err
}

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

标签: mongodbgo

解决方案


你有两件小事要在这里解决。

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

这是一个示例,您的查询应该是什么样子

collection.Find(bson.M{"owner_id": ownerID, "created_at": bson.M{"$gt": nowFormated}}).All(&lt)

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


推荐阅读